Как я могу «навязать» ветку стволу, если не могу «реинтегрировать»? - PullRequest
5 голосов
/ 03 мая 2010

Мы создали ветку из ствола, на которой был проведен основной рефакторинг. Тем временем багажник продвинулся несколько ревизий с некоторыми исправлениями. Мы не хотим, чтобы эти изменения произошли в ветви, поэтому мы не хотим «наверстывать» слияние магистрали с веткой, потому что мы не хотим смешивать старый и новый код. Но без этого я не смогу реинтегрировать ветку обратно в ствол.

Есть ли способ наложить ветку на ствол "как есть"?

(Идея, которую я рассмотрел, состоит в том, чтобы отменить ("обратное объединение") транк обратно к ревизии, где началась ветвь, и затем безопасно слить ее на ветке - ничего не должно произойти. Тогда я могу реинтегрироваться. Что ты думаешь?)

Ответы [ 2 ]

6 голосов
/ 03 мая 2010

Предполагая, что вы можете потерять эти изменения, тогда это приемлемое решение, хотя вы, возможно, захотите просто переименовать текущую магистраль в ветвь и переименовать ветвь в магистраль:

svn move https://path/to/repo/trunk https://path/repo/branches/newbranchname
svn move https://path/to/repo/branches/refactoring https://path/to/repo/trunk

Хотя,Вы действительно уверены, что не хотите вносить изменения из ствола?Вы можете рассмотреть это очень внимательно.Даже если вы провели много рефакторинга, если была сделана полезная работа над стволом, вы все равно можете посмотреть на нее очень внимательно, чтобы достигнутый прогресс не пропал даром.

3 голосов
/ 03 мая 2010

Вы можете использовать, как вы упомянули обратное слияние. Оформить багажник

svn merge -rHEAD:RevisionTheBranchWasCreated ^/trunk

Это отменит все изменения, которые вы сделали после создания ветки. После этого слияние должно работать без проблем.

Обновление: ^/trunk будет работать только в Linux. В Windows вам нужно ^^/trunk.

...