Как получить diff между всеми файлами внутри 2 папок, которые находятся в сети? - PullRequest
75 голосов
/ 03 мая 2011

Итак, я хочу сравнить эту папку http://cloudobserver.googlecode.com/svn/branches/v0.4/Boost.Extension.Tutorial/libs/boost/extension/ с этой http://svn.boost.org/svn/boost/sandbox/boost/extension/.Я хочу получить файл сравнения в результате.Эти папки находятся под контролем svn, но я бы предпочел файл diff в стиле git (например, один , показанный здесь ). Я пробовал git diff, но, похоже, это не работает для веб-папок.Так как сделать то же самое с одной командой в Linux?

Обновление: Итак, у нас был отличный ответ .Но это работает странно - мне кажется, это показывает, что все файлы (одни и те же файлы) имеют все их содержимое, замененное очень одинаковым содержимым (хотя я точно знаю, что было изменено всего 3-4 строки кода) ...

Обновление 2: Чтобы добиться того, что мне действительно нужно (файл dif только с действительно измененными строками, со стилем git, в Linux), выполните:

$ svn export http://cloudobserver.googlecode.com/svn/branches/v0.4/Boost.Extension.Tutorial/libs/boost/extension/ repos2 --native-eol CRLF
$ svn export http://svn.boost.org/svn/boost/sandbox/boost/extension/ repos --native-eol CRLF
$ git diff repos repos2 > fileWithReadableDiff.diff

Ответы [ 2 ]

143 голосов
/ 04 мая 2011

Как только у вас появятся исходные деревья, например,

diff -ENwbur repos1/ repos2/ 

Еще лучше

diff -ENwbur repos1/ repos2/  | kompare -o -

, и у вас есть хороший инструмент для создания графического интерфейса:)

  • -Ewb игнорировать большую часть изменений пробелов
  • -N обнаруживать новые файлы
  • -u унифицировано
  • -r recurse
4 голосов
/ 03 мая 2011

Ваши URL не находятся в одном и том же хранилище, поэтому вы не можете сделать это с помощью команды svn diff.

svn: 'http://svn.boost.org/svn/boost/sandbox/boost/extension' isn't in the same repository as 'http://cloudobserver.googlecode.com/svn'

Другой способ сделать это - экспортировать каждое хранилище с помощью svn export, а затем использовать команду diff для сравнения двух экспортированных вами каталогов.

// Export repositories
svn export http://svn.boost.org/svn/boost/sandbox/boost/extension/ repos1
svn export http://cloudobserver.googlecode.com/svn/branches/v0.4/Boost.Extension.Tutorial/libs/boost/extension/ repos2

// Compare exported directories
diff repos1 repos2 > file.diff
...