Слияние двух ревизий ветки с помощью Subversion

95

Я хотел бы объединить все изменения, которые произошли между rev 10 и HEAD rev на http: // url-of-branch-a, и применить их к http: // url-of-branch-b .

Что-то вроде...

svn merge -r 10:HEAD http://url-of-branch-a 

Это возможно? Если да, то каков синтаксис?

Я запускаю клиент SVN из командной строки unix. Версия клиента SVN - 1.4.

РЕДАКТИРОВАТЬ: Да, мое конкретное решение было ...

  1. сменить каталог на расположение моей рабочей копии, которая хочет получить изменения (ветка-b)
  2. svn merge -r 10: ГОЛОВКА http: // url-of-branch-a

Это объединяет изменения из 'branch-a' в 'branch-b'

user62732
источник
4
Также нужно знать, когда была взята ветка. Вы можете сделать это (svn log --stop-on-copy.) В своей ветке, чтобы получить номер версии, от которой вы разветвились.
jmc
@jmc, вам это больше не нужно с 2008 года, когда был выпущен SVN 1.5, AFAIR
bahrep

Ответы:

55

URL-адрес оформления заказа A. Используйте слияние SVN, чтобы объединить URL-адрес B с вашей рабочей копией A. Зафиксируйте A.

Или наоборот конечно :)

Билли Онил
источник
127

Процесс выглядит следующим образом:

  1. Установите рабочую копию ветки B ( svn checkout http://branch-b)
  2. Слить изменения из ветви A в рабочую копию B ( svn merge -r 10:HEAD http://branch-a .)
  3. Зафиксировать (после разрешения конфликтов) рабочую копию B в ветке b ( svn commit)

Просмотрите страницу руководства (файл справки) на предмет семантики слияния svn. Это показывает, что svn merge всегда выгружает результаты в рабочую копию.

Проверьте в SVNBook для всех деталей.

Джейми Хейл
источник
Не могли бы вы также дать представление, как это сделать с помощью плагина SVN в eclipse?
Snehal Masne
У меня это работает: svn merge --force --allow-mixed-revisions -r 10: HEAD branch-a
Мин Нгуен
2
почему мы указываем ревизию 10 для HEAD? Почему две конечные точки ревизии вместо одной ревизии для использования в качестве снимка? к какой ветви относится "10 to HEAD"?
ahnbizcad
2

В основном сбивает mergeс толку , пытаясь сделать в svn репо, мы не можем напрямую выполнить слияние с svn репо, мы можем выполнить слияние с рабочей копией локальной машины следующим образом:

  • Эта рабочая копия должна быть destination URLобъединенной (то есть местом оформления заказа).

  • слить рабочую копию с помощью source URLслияния.

  • commit к месту назначения.

Лучшая практика : слияние, слияние.

Премрадж
источник