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