Resolución de conflictos: ¿cómo aceptar "sus" cambios automáticamente?

97

Al fusionar cambios conflictivos usando hg merge, Mercurial inserta un conjunto de marcadores en los archivos que se fusionarán en mi copia de trabajo de la siguiente manera:

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

Luego edito manualmente todos los archivos marcados como U de una lista producida por hg resolve --all -ly luego le digo a Mercurial que los he resuelto porhg resolve -m file1 file2 file3 ...

En muchas situaciones, sin embargo, me gustaría aceptar los cambios solo para mí o para ellos en algunos archivos conflictivos. Me refiero a crear dos simples sed / awk / lo que sea guiones nombrados accept-theirs.shy accept-my.sho ¿hay alguna manera "correcta" de hacerlo?

psihodelia
fuente

Respuestas:

166

Utilizar

hg resolve -t internal:other --all

aceptar theirsy

hg resolve -t internal:local --all

aceptar yours

Noffls
fuente
¡Muchas gracias! No entiendo qué significa @djc, pero su solución funciona a la perfección.
psihodelia
@psihodelia djc dijo más o menos lo mismo, intente hg help merge-tools(mergetools es un alias en las últimas versiones)
MGP
6
Como nota al margen, le di un alias a esto:[alias] mine = resolve -t internal:local theirs = resolve -t internal:other
Melvyn
1
Esas son tres líneas para agregar a la propia .hgrc, para los novatos: [alias]entonces mine = resolve -t internal:local, entonces theirs = resolve -t internal:other. Después de eso, puede usar hg mine some_file.pyo hg theirs -a(para todos)
Tobia
1
A partir de phab.mercurial-scm.org/D4379 , es posible que también deba incluir la --re-mergebandera (p hg resolve -t internal:other --re-merge --all. Ej. )
Ethan Koenig
23

Prueba esto:

hg merge --tool 'internal:other'

Consulte también hg help merge-toolspara obtener más información.

djc
fuente
1
O resolvepara archivos individuales / rehacerlo. (Además, las citas internal:otherson innecesarias)
Chris Morgan