Size: 690
Comment:
|
Size: 2756
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 18: | Line 18: |
Cambiamo la seconda linea da così {{{ hello.c }}} a così: {{{ $ hello.c - hello, world }}} Salviamo e usciamo dall'editor e effettuiamo il commit della nostra modifica. Questa volta usiamo il comando {{{commit -m}}}, per evitare di dover entrare in un editor di testo: {{{ $ hg commit -m "Add description of hello.c" }}} A questo punto abbiamo fatto una modifica a hello.c nel repository {{{my-hello-new-output}}} e un'altra modifica a {{{hello.c}}} in {{{my-hello-desc}}} (cfr. Branch). Come effettuare il merge di queste due linee diverse di uno stesso progetto? Ci sarà qualche problema quando effettueremo il pull da un repository all'altro? Vediamo che succede se facciamo il pull delle modifiche di {{{my-hello-new-output}}} mentre siamo ancora in {{{my-hello-desc}}}: {{{ $ hg pull ../my-hello-new-output pulling from ../my-hello-new-output searching for changes adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files (+1 heads) (run 'hg heads' to see heads, 'hg merge' to merge) }}} Somiglia all'output del {{{pull}}} visto in TutorialCondividereModifiche! Allora ci resta da fare solo un aggiornamento, vero? {{{ $ hg update abort: update spans branches, use 'hg merge' or 'hg update -C' to lose changes }}} No, qualcosa è successo. Mercurial ci dice chedobbiamo unire le modifiche fatte in ogni repository. Sembra complesso, vero? Tuttavia è molto semplice! Seguiamo le istruzioni dell'ultima linea di output: {{{ $ hg merge merging hello.c 0 files updated, 1 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit) }}} (Per gli utenti Win: Mercurial manca di un programma d merge, se si verifica un errore tipo questo {{{hgmerge is not recognized as an internal or external command}}}. Guardare MergeProgram per informazioni su come correggere il problema) Questo è tutto! Mercurial poteva farlo automaticamente richiamando lo script {{{hgmerge}}} o qualsiasi sia il nostro programma di merge. |
Tutorial - Effettuare il merge di modifiche
In TutorialEsportare abbiamo imparato come condividere una modifica con altre persone, tuttavia, da quando con la versione 0.7 import non è stato più adeguato per effettuare correttamente il merge di e-mail pesanti, stiamo per mostrare come effettuare il merging attraverso il pull da un altro repository che contiene una modifica incompatibile.
Dapprima dobbiamo creare qualcosa da unire, ossia sulla quale effettuare il merge. Cloniamo di nuovo il repository my-hello:
$ cd .. $ hg clone my-hello my-hello-desc
Aggiungiamo semplicemente un commento a hello.c.
$ cd my-hello-desc $ vi hello.c
Cambiamo la seconda linea da così
hello.c
a così:
$ hello.c - hello, world
Salviamo e usciamo dall'editor e effettuiamo il commit della nostra modifica. Questa volta usiamo il comando commit -m, per evitare di dover entrare in un editor di testo:
$ hg commit -m "Add description of hello.c"
A questo punto abbiamo fatto una modifica a hello.c nel repository my-hello-new-output e un'altra modifica a hello.c in my-hello-desc (cfr. Branch). Come effettuare il merge di queste due linee diverse di uno stesso progetto? Ci sarà qualche problema quando effettueremo il pull da un repository all'altro?
Vediamo che succede se facciamo il pull delle modifiche di my-hello-new-output mentre siamo ancora in my-hello-desc:
$ hg pull ../my-hello-new-output pulling from ../my-hello-new-output searching for changes adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files (+1 heads) (run 'hg heads' to see heads, 'hg merge' to merge)
Somiglia all'output del pull visto in TutorialCondividereModifiche! Allora ci resta da fare solo un aggiornamento, vero?
$ hg update abort: update spans branches, use 'hg merge' or 'hg update -C' to lose changes
No, qualcosa è successo. Mercurial ci dice chedobbiamo unire le modifiche fatte in ogni repository. Sembra complesso, vero? Tuttavia è molto semplice! Seguiamo le istruzioni dell'ultima linea di output:
$ hg merge merging hello.c 0 files updated, 1 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit)
(Per gli utenti Win: Mercurial manca di un programma d merge, se si verifica un errore tipo questo hgmerge is not recognized as an internal or external command. Guardare MergeProgram per informazioni su come correggere il problema)
Questo è tutto! Mercurial poteva farlo automaticamente richiamando lo script hgmerge o qualsiasi sia il nostro programma di merge.