Subversion: как сравнить различия между входящими изменениями?


19

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

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

svn st -u

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

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

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

svn diff localChanges.html

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


Не ответ на ваш вопрос командной строки, но: в конце концов, когда вы узнаете, что отличается от вашей рабочей копии, вы, вероятно, захотите объединить изменения репозитория с вашими собственными изменениями. При использовании некоторого графического интерфейса для этого, почему бы не использовать графический интерфейс, чтобы помочь вам сделать начальный diff также? Такие инструменты, как TortoiseSVN, предлагают такое сравнение. Кроме того , Ида как Eclipse , может сделать обзор входящих изменений (даже тогда , когда нет ничего , чтобы Merge - приятно получить представление о том , что ваши коллеги были до) очень легко , избегая автоматическое слияние.
Арджан

1
Есть ли графический интерфейс для просмотра входящих изменений с использованием TortoiseSVN?
Кристиан,

Вы также хотели бы, чтобы diff ВходящиеChanges.html, а?
Раффи Хачадурян

Ответы:



2

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

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

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

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

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


2

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

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

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

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

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


0

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

http://mercurial.selenic.com/

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


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

Эта работа, но scm должен обеспечить более интегрированный способ.
Rds

0

я думаю

svn diff -r HEAD

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.