Как найти svn diff между рабочей копией и произвольным rev?
Я пытаюсь написать многофакторный патч для проекта с открытым исходным кодом, но главная копия изменилась с тех пор, как я начал работать. Мне нужно получить разницу SVN (только файлы под контролем версий) между моей незафиксированной версией и версией, с которой она была проверена. Какую команду SVN я могу использовать, чтобы найти разницу?
Изменить: Извините, я, должно быть, неправильно использовал термин "рабочая копия". Мне нужно сравнить мои незафиксированные изменения с версией, с которой они основаны. Другими словами, я проверил ревизию 1000 и изменил файлы foo
и bar
. Число оборотов теперь до 1015, но мне нужно сравнить мою версию foo
и bar
с версией версии 1000. Есть ли простая команда для этого (сравните мою измененную копию программы с прошлым пересмотр)?
Ответы
Ответ 1
Вы можете использовать параметр -rN: M с командой diff, которая определяет ревизии, которые вы хотите сравнить. Просто предоставьте версию, из которой была выгружена ваша рабочая копия (вы можете опустить M, поскольку она по умолчанию работает с рабочей копией), и вы должны получить то, что вам нужно.
Если вы не помните, что исходный номер версии попытался запустить svn status -v
, а первый столбец должен показать его.
Больше информации svn help diff
...
Ответ 2
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)
...
Я верю, что это то, что вам нужно, да?
Ответ 3
Если ваша цель состояла в том, чтобы получить отчет только с именами файлов, в которых содержимое изменилось, это должно сделать трюк:
svn diff | grep 'Index: ' .