Як отримати різницю між усіма файлами в 2 папках, що знаходяться в Інтернеті?


77

Тому я хочу порівняти цю папку http://cloudobserver.googlecode.com/svn/branches/v0.4/Boost.Extension.Tutorial/libs/boost/extension/ з цим http://svn.boost.org/svn/boost/sandbox/boost/extension/ . В результаті я хочу отримати файл diff. Ці папки перебувають під контролем svn, але я б віддав перевагу файлу різниці в стилі 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
ха-ха; Я щойно помітив, що ви пов’язали мою one shown hereрізницю із ... wotta збігом
sehe

Відповіді:


155

Як тільки у вас є вихідні дерева, напр

diff -ENwbur repos1/ repos2/ 

Навіть краще

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

і у вас є тріщина в хорошому інструменті графічного інтерфейсу :)

  • -Ewb ігнорує основну кількість пробілів
  • -N виявлення нових файлів
  • -у уніфікований
  • -r рецидив

так що ... так - сподобався твій diff style, надіслав повну різницю на твій + моє boost.extention Джеремі ... (див. це оновлення для мого способу його отримання) ... Я все ще думаю, як це зробити один рядок =)
Релла

Ну спасибі за прийняття; Гадаю, мої оригінальні вказівки (версія 2) у цій іншій публікації приховували мій секрет: я використовував 'git svn clone ... svn .... / branch / v0.4 ' і просто редагував локально. Потім це стає простим git diffабо git, format-patchзалежно від того, скільки роботи було зроблено
sehe

я раніше не знав про порівняння, це саме те, що я шукав. Дякую
Ерін

2
було б непогано додати посилання, kompareоскільки це зовнішній пакет (принаймні на моєму Ubuntu 16.04)
gilad mayani

1
Ви можете повністю використовувати блокнот ++ з мовою, встановленою на "Diff", це працює як шарм (без порівняння)
Hybris95

4

Ваші 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 порівняйте 2 експортовані каталоги.

// 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

Я замінив останній рядок на, git diff repos1 repos2 > file2.diffі він став більш інформативним ... але, мені здається, це показує, що всі файли (однакові файли) мають весь вміст Thare замінений обережним однаковим вмістом (хоча я точно знаю, що було лише 3 рядки коду змінився взагалі) ...
Релла
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.