Tutorial - risolvere i conflitti tra modifiche

Abbiamo così imparato come effettuare un semplice merge in TutorialEffettuareMerge.

Mercurial gestisce anche casi più complessi. Non è strano che due persone modifichino esattamente le stesse linee di un file; in questo caso bisogna sapere cosa fare. Questi casi sono chiamati conflitti; il primo passo per risolverli è immaginarsi come accadano.

Creiamo una situazione artificiale di conflitto. Come fatto in precedenza, iniziamo clonanod my-hello:

==code==

Ora aggiungiamo una nuova linea di output a hello.c:

==code==

Cambiamo così il main:

==codeC==

Inseguito commentiamo la modifica:

==code==

Facciamo riferimento a TutorialPrimaModifica e creiamo un changeset in my-hello-new-output al quale è aggiunta già una seconda linea di output Che succede quando proviamo a eseguire l pull?

==code==

Eseguiamo l'update.

==code==

cfr. anche Branch

Come in TutorialEffettuareMerge, dobbiamo lanciare hg merge. Come prima, il programma di merge si eseguirà automaticamente.

Qui sotto ecco l'esempio del messaggio che mostra il conflitto in vim sotto Linux.

==code==

Mercurial usa un merg a 3 vie per ogni file. Questo vuol dire che ci sono tre file di input per ogni processo di unificazione( merge ). Si tratta di:

Per più informazioni riguardo alle 3 vie controllare ThreeWayMerge su Revctrl wiki.

Tuttavia, se non dovessimo avere un programma a interfaccia grafica di merge installato, saremo portati ad un editor di testo, che visiterà il file che dobbiamo unire. Facendo tutto ciò a mano c'è il rischio di fare errori e l'operazione comunque resta noiosa. E' meglio uscire dall'editor e usare il comando hg rollback per annullare l'effetto del pull, installare poi un programma di merge e provare di nuovo.

(NB: prima della versione 0.9 di Mercurial, si sarebbe dovuto usare il comandohg update -m al posto di hg merge o hg undo invece di hg rollback)


CategoryItalian