2014-01-24 2 views
1

У меня есть 2 филиала в моем хранилище Mercurial. 'по умолчанию' и 'другого'Mercurial, change branch of changeet

по умолчанию филиала A - B - C - D

других ветвь E - F

нужно перенести B ревизию в другую отрасль , Так это будет выглядеть следующим образом:

по умолчанию филиал A - C - D

другой ветви E - F - B

Возможно ли это?

Заранее благодарен!

ответ

2

трансплантат решения на основе

  • трансплантата (hg help graft) B целевой ветвь
  • Remove (histed расширения) B от исходной ветви (привитый только сделать копию ревизии, не удаляя оригинал)

Rebase решение на основе

  • Rebase B в other филиале
  • Поскольку перебазироваться движение также потомки нормированной ревизии - перебазироваться C обратно default
1

следующим решением не требует включений каких-либо расширений. Однако он предполагает существование утилиты patch.

По умолчанию:

$ hg diff -c B > diff.out 
$ hg backout --merge -r B 
$ hg merge 
$ hg ci 

На другой филиал:

$ patch -p1 < diff.out 
$ hg ci 
+0

Огромное спасибо за решение, я все еще получаю такое сообщение прерывания: ничего не сливаться (обновления используйте «рт.ст. 'вместо этого) в вашем решении. Но я понял, как это исправить. Это то, что мне действительно нужно. ++ для вас. –

+0

Лучше (и * более естественный * путь и немного больше пути Mercurial) будет 'hg export' +' hg import' в вашей модели. И, BTW, без снятия оригинала, вы сделали копию, а не перемещение, набор изменений –

Смежные вопросы