Вопрос

Ситуация: Я новичок в 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top