Mercurial: объединение между ветвями ... назад?
-
28-09-2019 - |
Вопрос
Ситуация: Я новичок в 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
Решение
Есть два способа пойти на это. Правильный и целесообразный. Я сделаю правильно первым:
hg update default
hg --config ui.merge=internal:other merge vendor
Это обновляет ваш родитель по умолчанию и рабочем каталоге по умолчанию, а затем объединяется в содержимое от поставщика, но делает это, используя внутренний инструмент Merge, который всегда Выбирает другой вариант, когда есть никакая разница, поэтому вы будете иметь по умолчанию, выглядя поставщику после этого слияния (и фиксации).
Подлый путь:
hg update -C vendor
hg debugsetparent default
hg commit
Где debugsetparent
Это PowerTool, который делает «родительский изменение» часть обновления, не обновляя файлы в рабочем каталоге.
Другие советы
Хотя ему не хватает контекста этот вопрос и его ответы, я нашел Официальный ответ на Wiki Mercurial.