Как мне найти svn diff между рабочей копией и произвольной версией? - PullRequest
18 голосов
/ 04 марта 2010

Я пытаюсь написать многофайловое исправление для проекта с открытым исходным кодом, но основная копия изменилась с тех пор, как я начал работать. Мне нужно получить разницу SVN (только файлы под управлением версией) между моей незафиксированной версией и ревизией, из которой она была проверена. Какую команду SVN я могу использовать, чтобы найти разницу?

Редактировать: Извините, я, должно быть, неправильно использовал термин "рабочая копия". Мне нужно сравнить мои незафиксированные изменения с ревизией, на которой они основаны. Другими словами, я извлек ревизию 1000 и изменил файлы foo и bar. Число оборотов теперь до 1015, но мне нужно сравнить мою версию foo и bar с версией ревизии 1000. Есть ли простая команда для этого (сравните мою измененную копию программы с прошлой пересмотр)

Ответы [ 3 ]

13 голосов
/ 04 марта 2010

Вы можете использовать параметр -rN: M с командой diff, которая указывает ревизии, которые вы хотите сравнить. Просто предоставьте ревизию, из которой была извлечена ваша рабочая копия (вы можете опустить M, поскольку она по умолчанию является рабочей копией), и вы должны получить то, что вам нужно.

Если вы не помните исходный номер редакции, попробуйте запустить svn status -v, и в первом столбце должно появиться его.

Подробнее svn help diff ...

9 голосов
/ 04 марта 2010

svn diff принимает аргумент -rN:M, который по умолчанию равен N == BASE и M == working copy. Будет svn diff -r REV где REV ревизия, которую вы хотите, не работать?

Чтобы ответить на ваши изменения, предположим, что у вас есть следующее:

$ ls
foo bar baz
$ svn st -u
Status against revision:    1071
$ echo "more stuff" >> foo
$ svn diff -r 1000 foo
Index: foo
===================================================================
--- foo  (revision 1000)
+++ foo  (working copy)
...

Я считаю, что это то, что вы ищете, да?

0 голосов
/ 25 июля 2013

Если ваша цель состояла в том, чтобы получить отчет только о именах файлов, содержимое которых изменилось, это должно сработать:

svn diff | grep 'Index: ' .
...