19

Я хотел бы видеть изменения, которые сделали мои коллеги, прежде чем я приму входящие изменения.

Итак, я начинаю с получения статуса

svn st -u

... который говорит мне, что я получил входящее изменение

    *     9803   incomingChanges.html
M         9803   localChanges.html
M   *     9803   localAndIncoming.html

Я вижу, что я изменил

svn diff localChanges.html

... но как я могу localAndIncoming.html чтобы показать, что было изменено и чем оно отличается от моей рабочей копии?

6 ответов6

21

Я считаю, что вам нужно это:

svn diff -rBASE:HEAD
2

С tortoisesvn (если вы используете Windows)

  • Вызвать экран журнала

  • Выберите ревизию головы

  • Щелкните правой кнопкой мыши localAndIncoming.html.

  • Выберите Сравнить с рабочей копией.

2

FYI svn diff выдает diff на основе неизмененного файла, хранящегося в каталоге .svn , а не на версии живого репо.

Вы можете запустить svn update чтобы получить subversion для попытки обновления (и, возможно, слияния), а затем выполнить svn diff , но это не так чисто, как я думаю, вы хотите.

Наконец, svn diff поддерживает дифф только на репо. Пример:

svn diff svn://svnserver/repo/localChanges.html -r REV_NO

Который по умолчанию сравнивает HEAD с переданной ревизией.

0

Сделайте еще один заказ в новой папке.

cd ..
svn checkout  /path/to/repo clean_working_copy

Если вы повторно используете clean_working_copy, не забудьте обновить до

svn update clean_working_copy

Затем сравните ваш файл с файлом из clean_working_copy

diff your_working_copy/localAndIncoming.html clean_working_copy/localAndIncoming.html

Или с вашим предпочтительным 3-way diff (у меня kdiff3)

kdiff3 --L1 Base --L2 theirs --L3 mine your_working_copy/.svn/text-base/localAndIncoming.html clean_working_copy/localAndIncoming.html your_working_copy/localAndIncoming.html
0

Я думаю

svn diff -r HEAD

почти дает то, что вы хотите. Единственное, что + и - обратны относительно того, что вы ожидаете.

0

Вы действительно не можете, пока вы действительно не загрузите новую версию. Подобные ограничения были одной из главных причин, почему новый тип контроля версий стал популярным в последнее время. Это называется децентрализованным контролем источников.
С этой новой формой у вас есть собственный локальный репозиторий, и вы можете взять изменения из основного репозитория и запустить diff для него. Если вам не нравятся внесенные изменения, вы можете вернуть свой собственный репозиторий и перейти оттуда.

http://mercurial.selenic.com/

И да, я знаю, что предлагать вам поменять продукты - не оптимальное решение, но, тем не менее, это решение.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .