Mercurial Rebase Сценарий - PullRequest
       32

Mercurial Rebase Сценарий

4 голосов
/ 01 января 2011

Я прочитал страницу RebaseProject и попробовал нетривиальный пример (не перебрасывая полную ветку). Это похоже на случай rebase D на Я по сценарию Б.

Вот ситуация до перебазирования:

default : 0 ----- 2
            \
feature :     1 ----- 3

Теперь я хотел бы перебазировать 3 на 2, давая:

default : 0 ----- 2 ----- 3
            \
feature :     1

К сожалению, точные команды не указаны в RebaseProject страница, но из моего понимания краткого описания использования это должно быть:

hg rebase --source 3 --dest 2

Но каким-то образом мое понимание должно быть ошибочным, потому что я получаю ребаз в сочетании со слиянием:

default : 0 ----- 2 ----- 3
            \           /
feature :     1 -------

Почему это?

Команды для воспроизведения сценария:

hg init
touch a
hg add a
hg commit -m "added a"
hg branch feature
touch b
hg add b
hg commit -m "added b on feature"
hg up -C default
touch c
hg add c
hg commit -m "added c on default"
hg up -C feature
echo "feature" >> a
hg commit -m "changed a on feature"
hg rebase --source 3 --dest 2

1 Ответ

3 голосов
/ 01 января 2011

Ваш сценарий очень похож на часть rebase G onto I из scenario B проекта Rebase Сценарии:

Сценарий B
...

scenario B originally
...

перебазировать G на I

rebase G onto I

В вашем сценарии D == 1, I == 2 и G == 3.После перебазирования 3 сохраняет свои отношения с 1 точно так же, как G' поддерживает свои отношения с D.Это связано с тем, что D является , а не предком I и:

Примечание: Rebase отбрасывает родительские отношения только в том случае, если родитель является предком цели.

Вы действительно хотите удалить это отношение, тогда, согласно документам, вам нужна версия для разработки , чтобы получить параметр --detach:

При использовании версии разработки доступна новая опция --detach, которая удаляет это отношение.

new --detach option

...