Como abortar uma fusão no mercurial?

85

Eu errei uma fusão. Eu gostaria de reverter e tentar novamente.
Existe uma maneira de reverter uma mesclagem antes de ser confirmada?

hg revertnão faz o que eu gostaria, só reverte o texto dos arquivos. O Mercurial aborta minha segunda tentativa de mesclar e reclama que a mesclagem original ainda não foi confirmada.

Existe uma maneira de desfazer uma mesclagem após um hg mergecomando, mas antes de ser confirmado?

deft_code
fonte
Possível duplicata de Como abandonar uma fusão hg?
Rodrigue

Respostas:

107

hg update -C <one of the two merge changesets>

Omniforme
fonte
Simples, eficiente e, eu acho, a melhor maneira de fazer isso! : D
Eric-Karl,
@JonL. - Sim, --cleané sinônimo de -C. Não tenho certeza de qual conjunto de alterações .se refere, mas sempre será um dos dois conjuntos de alterações mesclados.
Onifário
3
@Omnifarious, a limpeza .deve limpar a revisão em que você estava antes de iniciar a mesclagem. Portanto, se você estivesse em r42, tentasse fundir-se com r43, falhasse, limpasse, você estaria de volta em um r42 puro.
Jon L.
2
hg update --cleanfunciona, pois .parece ser o padrão implícito - embora não seja explicitamente documentado .
Joel Purra
@JoelPurra: O significado de .no contexto de uma fusão é bastante ambíguo.
Omnifarious
39

Depois de fazer hg merge, mas antes hg commit, sua cópia de trabalho terá dois pais: o primeiro pai é o changeset que você atualizou antes da fusão e o segundo pai é o changeset com o qual você está mesclando. O Mercurial não permitirá que você o faça hg mergenovamente, desde que sua cópia de trabalho tenha dois pais.

Você tem duas opções de como proceder:

  1. Se você quiser abortar a mesclagem e voltar ao ponto de partida, faça

    hg update -C .
    

    Isto irá atualizar a cópia de trabalho para corresponder ao primeiro pai: o .sempre denota o primeiro pai da cópia de trabalho.

  2. Se você quiser fundir novamente alguns arquivos, faça

    hg resolve fileA fileB
    

    Isso irá reiniciar as ferramentas de mesclagem, exatamente como você fez hg merge. O comando resolve é bom se você descobrir na hg mergehora que suas ferramentas de mesclagem estão mal configuradas: corrija a configuração e execute hg resolve --all. Você pode executar hg resolvequantas vezes quiser até ficar satisfeito com a mesclagem.

Martin Geisler
fonte