Subversion: Як порівняти відмінності між вхідними змінами?


19

Я хотів би побачити зміни, які внесли мої колеги до того, як я прийму вступні зміни.

Тож я починаю з отримання статусу

svn st -u

... що говорить мені, що я вступив на зміну

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

Я бачу, що я змінив

svn diff localChanges.html

... але як я можу localAndIncoming.htmlвідрізнятись, щоб показати, що було змінено, і чим це відрізняється від моєї робочої копії?


Не відповідь на запитання вашого командного рядка, але: врешті-решт, як тільки ви дізнаєтесь, чим він відрізняється від вашої робочої копії, ви, ймовірно, захочете об'єднати зміни сховища з вашими власними змінами. Якщо ви користуєтесь цим графічним графічним інтерфейсом, чому б не використовувати графічний інтерфейс, який допоможе вам зробити початковий розбір? Такі інструменти, як TortoiseSVN, пропонують таке порівняння. Крім того, такі IDE, як Eclipse, можуть зробити перегляд вхідних змін (навіть коли нічого злиття - приємно отримати уявлення про те, що розробили ваші колеги) дуже легко , уникаючи автоматичного злиття.
Ар'ян

1
Чи існує спосіб GUI бачити вхідні зміни за допомогою TortoiseSVN?
Крістіан

Ви також хочете розрізняти incomingChanges.html, ні?
Раффі Хатчадуріан

Відповіді:



2

FYI svn diffнадає відмінності на основі немодифікованого файлу, що зберігається в .svnкаталозі, а не на основі реальної версії репо.

Ви можете запустити, svn updateщоб отримати субверсію для спроби оновлення (і, можливо, злиття), а потім зробити svn diff, але це не так чисто, як я думаю, ви хочете.

Нарешті svn diff, підтримка відрізняється лише від репо. Приклад:

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

Які значення за замовчуванням для порівняння HEAD з минулою редакцією.


2

З черепашкою (якщо ви використовуєте вікна)

  • Виклик екрана журналу

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

  • Клацніть правою кнопкою миші на localAndIncoming.html

  • Виберіть Порівняти з робочою копією


0

Ви дійсно не можете, поки фактично не завантажите нову версію. Такі обмеження були однією з головних причин того, що останнім часом новий тип управління джерелами набув популярності. Це називається децентралізованим управлінням джерелами.
З цією новою формою у вас є власне локальне сховище, і ви можете потім приймати зміни з головного сховища та виконувати його на різних, якщо вам не подобаються внесені зміни, ви можете відновити власне сховище та перейти звідти.

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

Або з вашим кращим тристороннім відмінним (мій 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

Ця робота, але негідність повинна забезпечити більш інтегрований спосіб.
rds

0

Я думаю

svn diff -r HEAD

майже дає те, що ти хочеш. Єдине, що + і - зворотні відносно того, що ви очікуєте.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.