Resolvendo conflitos: como aceitar as mudanças “deles” automaticamente?

97

Ao mesclar alterações conflitantes usando hg merge, o Mercurial insere um conjunto de marcadores nos arquivos a serem mesclados em minha cópia de trabalho, como este:

<<<<<<< local
  version = 0.2
=======
  version = 0.1
>>>>>>> other

Em seguida, edito manualmente todos os arquivos marcados como U de uma lista produzida por hg resolve --all -le digo ao mercurial que os resolvi porhg resolve -m file1 file2 file3 ...

Em muitas situações, gostaria, no entanto, de aceitar as alterações apenas meu ou apenas deles em alguns arquivos conflitantes. Estou pensando em criar dois scripts sed / awk / qualquer que seja o nome accept-theirs.she accept-my.shou existe alguma maneira "adequada" de fazer isso?

psihodelia
fonte

Respostas:

166

Usar

hg resolve -t internal:other --all

aceitar theirse

hg resolve -t internal:local --all

aceitar yours

Noffls
fonte
Muito obrigado! Não entendo o que @djc significa, mas sua solução funciona perfeitamente.
psihodelia
@psihodelia djc disse praticamente o mesmo, tente hg help merge-tools(mergetools é um apelido nas últimas versões)
MGP
6
Como observação lateral, coloquei o seguinte alias:[alias] mine = resolve -t internal:local theirs = resolve -t internal:other
Melvyn
1
Essas são três linhas para adicionar à sua .hgrc, para os novatos: [alias]então mine = resolve -t internal:local, então theirs = resolve -t internal:other. Depois disso, você pode usar hg mine some_file.pyou hg theirs -a(para todos)
Tobia
1
Em phab.mercurial-scm.org/D4379 , você também pode precisar incluir a --re-mergebandeira (por exemplo hg resolve -t internal:other --re-merge --all)
Ethan Koenig
23

Experimente isto:

hg merge --tool 'internal:other'

Veja também hg help merge-toolspara mais informações.

djc
fonte
1
Ou resolvepara arquivos individuais / refazendo. (Além disso, as aspas internal:othersão desnecessárias.)
Chris Morgan,