2009-04-28 28 views
33

Ho un conflitto di fusione, utilizzando Mercurial 1.0.2:Come risolvere i conflitti di unione in Mercurial (v1.0.2)?

merging test.h 
warning: conflicts during merge. 
merging test.h failed! 
6 files updated, 0 files merged, 0 files removed, 1 files unresolved 
There are unresolved merges, you can redo the full merge using: 
    hg update -C 19 
    hg merge 18 

io non riesco a capire come risolvere questo. risultati di ricerca Google istruire da usare:

hg resolve 

ma per qualche motivo il mio Mercurial (v1.0.2) non dispone di un comando di determinazione:

hg: unknown command 'resolve' 

Come posso risolvere questo conflitto?

+0

Penso che devi contrassegnare una risposta diversa come quella corretta .. – Lipis

risposta

13

Valido per hg < v1.1 solo

Non c'è bisogno di chiamare tutti i comandi hg. A differenza di svn, Mercurial non tiene traccia dei file in conflitto. Se chiami hg status, vedrai che il file è semplicemente contrassegnato come modificato.

Basta correggere il file manualmente e confermare.

+0

Quindi sembra che Mercurial abbia spostato la mia copia locale in test.h.orig e test.h sia ora dall'altra parte ... c'è qualche modo per evitare la creazione del file .orig in modo che non venga aggiunto accidentalmente? – lajos

+0

Non sono sicuro che sia possibile, ma puoi aggiungere * .orig al tuo file .hgignore. – avakar

+16

Se si modifica semplicemente il file e quindi si esegue il commit, è possibile che non venga riconosciuto come unione dei due rami, ma solo un nuovo commit sul proprio lavoro. Penso che sia necessario correggere il file manualmente e quindi fare ** hg resolve -m test.h ** per contrassegnare il file come unito. –

10

I conflitti di tracciamento sono stati introdotti in Mercurial 1.1, che è una versione più recente che si sta utilizzando (è necessario eseguire l'aggiornamento, Mercurial 1.1 è stato rilasciato nel dicembre 2008). In questa versione hai ottenuto il comando resolve che funziona allo stesso modo di svn resolve.

Se ben ricordo, Mercurial lascerebbe fusione marcatori (i <<<< e >>>> righe) nel file quando c'è un conflitto, a meno che non si è configurato un merge tool. Questo vale anche per le versioni più recenti: non ho configurato uno strumento di unione e ottengo i marcatori di fusione quando si verificano conflitti. Posso quindi correggere manualmente il file e contrassegnarlo risolto con hg resolve.

75

Per evidenziare una risposta in un commento per Hg 1.1+:

Per Hg 1.1+ correggere il file a mano e poi fare

hg resolve -m test.h 

per contrassegnare il file come fusi.

+0

devo cancellare manualmente i file .orig? –

+0

stessa domanda. Cosa fare con i file .orig allora? –

+1

Ho appena cancellato manualmente –

Problemi correlati