2013-03-21 16 views
63

Quando la fusione modifiche in conflitto con hg merge, Mercurial inserisce una serie di marcatori nei file da unire nella mia copia di lavoro in questo modo:Risoluzione dei conflitti: come accettare automaticamente le "loro" modifiche?

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

Poi ho modificare manualmente tutti i file contrassegnati come U da una lista prodotta da hg resolve --all -l e poi dico a Mercurial che li ho risolti da hg resolve -m file1 file2 file3 ...

In molte situazioni, tuttavia, vorrei accettare modifiche solo mie o solo su alcuni file in conflitto. Sto pensando di creare due semplici script sed/awk/qualunque denominati accept-theirs.sh e accept-my.sh o esiste un modo "corretto" per farlo?

risposta

117

Usa

hg resolve -t internal:other --all 

ad accettare theirs e

hg resolve -t internal:local --all 

accettare yours

+0

Grazie mille! Non capisco cosa significhi @djc, ma la tua soluzione funziona come un incantesimo. – psihodelia

+0

@psihodelia djc ha detto più o meno la stessa cosa, prova 'hg help merge-tools' (mergetools è un alias in queste ultime versioni) –

+5

Come nota a margine, ho aggiunto questo alias:' [alias] mine = resolve -t internal: local loro = resolve -t internal: other' – Melvyn

16

Prova questa:

hg merge --tool 'internal:other' 

Vedi anche hg help merge-tools per ulteriori informazioni.

+1

o 'resolve' per i singoli file/rifare. (Inoltre, le virgolette su 'interno: altro' non sono necessarie.) –

Problemi correlati