Mercurial: слияние веток ... назад? - PullRequest
3 голосов
/ 01 ноября 2010

Ситуация: Я новичок в Mercurial. Я недавно установил и начал использовать репозиторий в рекомендованной мне модели (см. Диаграмму Руди ниже). Дела шли хорошо, но я столкнулся с первой проблемой практического применения. Mercurial, похоже, ориентирован на прямое / смешанное слияние, и я хотел бы сделать резервную копию. Я хочу очистить нашу ветку по умолчанию и стабильную ветку, начав с ветки вендора, заново внести наши изменения и зарегистрировать их по умолчанию. Затем объедините это в стабильный.

V1----V2-------------V3---------V4     Vendor
 \     \              \          \
  D1----D2---D3--D4-D5-D6-D7-D8---D9   default
                  \           \    \
                   S1----------S2---S3 stable

Вопрос: Как начать с ветви поставщика в качестве родительской, объединить изменения по умолчанию и зафиксировать их в ветви по умолчанию?

Я думал, что следующее сделает это, но обновление изменит рабочий каталог.

hg update -C vendor
hg update default
hg merge

Ответы [ 2 ]

4 голосов
/ 01 ноября 2010

Есть два способа сделать это. Правильный и целесообразный. Сначала сделаю правильно:

hg update default
hg --config ui.merge=internal:other merge vendor

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

Подлый путь:

hg update -C vendor
hg debugsetparent default
hg commit

Где debugsetparent - это powertool, выполняющий часть обновления «смена родителей» без фактического обновления файлов в рабочем каталоге.

0 голосов
/ 02 ноября 2010

Несмотря на отсутствие контекста в этом вопросе и его ответах, я нашел официальный ответ на вики Mercurial .

...