Mercurial: Mesclagem entre galhos ... para trás?
-
28-09-2019 - |
Pergunta
A situação: Eu sou novo no Mercurial. Recentemente, configurei e comecei a usar um repositório em um modelo recomendado para mim (Veja o diagrama de Rudi abaixo). As coisas estão indo bem, mas eu encontrei meu primeiro problema prático de aplicação. O Mercurial parece estar voltado para mesclas para a frente/mistura e eu gostaria de fazer backup. Quero limpar nossa ramificação padrão e estável começando com a filial do fornecedor, re-fazer nossas alterações e verifique-a como padrão. Em seguida, mescle isso em estável.
V1----V2-------------V3---------V4 Vendor
\ \ \ \
D1----D2---D3--D4-D5-D6-D7-D8---D9 default
\ \ \
S1----------S2---S3 stable
A questão: Como faço para começar com a filial do fornecedor como pai, mesclar as alterações padrão e compromete -as com a filial padrão?
Eu pensei que o seguinte faria isso, mas a atualização altera o diretório de trabalho.
hg update -C vendor
hg update default
hg merge
Solução
Existem duas maneiras de ir isso. O direito e o expediente. Vou fazer o certo primeiro:
hg update default
hg --config ui.merge=internal:other merge vendor
Isso atualiza seus pais para o padrão e o diretório de trabalho para padrão e depois se funde no conteúdo do fornecedor, mas o faz usando uma ferramenta de mesclagem interna que sempre Escolha a outra opção quando houver alguma diferença, então você terá o padrão como fornecedor após a mesclagem (e se comprometer).
A maneira sorrateira é:
hg update -C vendor
hg debugsetparent default
hg commit
Onde debugsetparent
é um PowerTool que faz a parte da "alteração dos pais" da atualização sem realmente atualizar os arquivos no diretório de trabalho.
Outras dicas
Embora não tenha o contexto que essa pergunta e suas respostas fornecem, eu encontrei o Resposta oficial no Wiki de Mercurial.