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.
- Se siamo stati attenti, o fortunati, ed è installato un programma di merge, potremo vedere cosa è in conflitto tra le due modifiche e decidere come risolvere il problema.
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:
- File locali(dal repository corrente)
- Altri file(dal repository che deve essere unito)
- File di base(ultima versione del file prima che si separassero le ramificazioni)
Per più informazioni riguardo alle 3 vie controllare ThreeWayMerge su Revctrl wiki.