Разделение линейной истории на две ветви в Mercurial - PullRequest
4 голосов
/ 12 декабря 2011

У меня есть ртутная история хранилища, которая выглядит следующим образом:

A -> B -> C -> N1 -> N2 -> N3 -> D -> E -> F

И я хотел бы преобразовать ее в следующую историю:

A -> B -> C -> D -> E -> F
           \_ N1 -> N2 -> N3

Учитывая, что у меня есть клончья история останавливается на C, каков наилучший способ продолжить?Набор изменений DEF не конфликтует с набором изменений N1 N2 N3.Ну, по крайней мере, я на это надеюсь;)

Ответы [ 2 ]

6 голосов
/ 12 декабря 2011

Не нужно иметь клона, вы можете работать в оригинальном репо.Вы можете пересадить D, E и F поверх C, создавая копии D1, E1 и F1 (которые будут идентичны оригиналам при условии, что нет конфликтующих изменений).У вас будет это:

A -> B -> C -> N1 -> N2 -> N3 -> D -> E -> F
           \_ D1 -> E1 -> F1

Тогда вы сможете раздеть оригиналы.Смотрите скрипт ниже.

$ hg update C
$ hg transplant D E F
$ hg strip D

Вам нужно будет включить два расширения: transplant и mq.Для этого добавьте эти строки в ваш hgrc:

[extensions]
transplant=
mq=

Обновление: Начиная с Mercurial 2.0, вместо 1015 * (встроенная команда) можно использовать вместоtransplant здесь;rebase, как предполагает Лоренс Холст , должен работать одинаково хорошо.

2 голосов
/ 13 декабря 2011

Вы можете использовать rebase для этого:

hg rebase --source D --dest C

Это работает с Mercurial 2.0; Раньше он жаловался при переходе на ревизию предка, но они это удалили.

Вы должны включить расширение rebase , если вы еще этого не сделали:

[extensions]
rebase =
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...