Subversion: лучший способ переноса изменений из одной ветки в другую - PullRequest
2 голосов
/ 17 декабря 2008

У меня есть две ветви: X и Y. Я хочу заменить подкаталог Y (y1) его эквивалентом из X (x1).

В настоящее время я делаю следующее: скопировать x1 в Y, удалить y1, переименовать (переместить) x1 в y1:

a) svn copy https://path/to/branches/X/x1 https://path/to/branches/Y/
b) svn delete https://path/to/branches/Y/y1
c) svn move https://path/to/branches/Y/x1 https://path/to/branches/Y/y1

Я думаю, это довольно некрасиво ...

Как я мог сделать это умнее?

Ответы [ 4 ]

3 голосов
/ 17 декабря 2008

Если вы действительно хотите заменить каталог, вы можете сделать это с помощью двух операций:

svn delete https://path/to/branches/Y/y1
svn copy https://path/to/branches/X/x1 https://path/to/branches/Y/y1

Если Y / Y1 действительно уже является более старой копией X / Y1, вы не должны заменять ее все время, а вместо этого объединить все изменения с момента последнего слияния в нее.

1 голос
/ 11 ноября 2010

Простой способ перемещения ветки:

svn mv url1 url2 -m "commit log msg"
1 голос
/ 22 октября 2009

проверьте ветку Y на новую рабочую копию и поставьте себя там.

svn co https://path/to/branches/Y Y
cd Y

объединить изменения, необходимые для преобразования Y / y1 в X / x1 в Y / y1

svn merge https://path/to/branches/Y/y1 https://path/to/branches/X/x1 y1

совершить это

svn commit -m "Y/y1 now has the same contents as X/x1"

Если y1 имеет имя, отличное от x1 (непонятно из вашего описания), сделайте переименование:

svn mv y1 x1
svn commit -m "Y/y1 now named Y/x1"

Но, вы знаете, если ваш рабочий процесс требует от вас слияний поддеревьев, подобных этому (или, что еще хуже, хирургии деревьев, пропагандируемой другими авторами), вы, вероятно, делаете это неправильно.

1 голос
/ 17 декабря 2008

Почему бы не сделать два шага:

a) svn delete https://path/to/branches/Y/y1
b) svn copy https://path/to/branches/X/x1 https://path/to/branches/Y/y1
...