Prendiamo un semplice esempio: sto lavorando sul ramo predefinito, ho eseguito alcuni changeset a livello locale e ne ho estratto altri dal repository principale. Ho lavorato per qualche giorno nel mio repository locale isolato, quindi ci sono alcune modifiche da unire prima di poter reinserire i miei risultati in master.Unisce la direzione in Mercurial?
default ---o-o-o-o-o-o-o-o-o-o-o (pulled stuff)
\
o----o------------o (my stuff)
Ora posso fare due cose.
Opzione # 1:
hg pull
hg merge
Risultato # 1:
default ---o-o-o-o-o-o-o-o-o-o-o
\ \
o----o------------o-O
Opzione # 2:
hg pull
hg update
hg merge
Risultato # 2:
default ---o-o-o-o-o-o-o-o-o-o-o-O
\ /
o----o------------o
Questi due risultati mi sembrano isomorfi, ma in pratica sembra che l'opzione n. 2 si traduca in piccoli changeset (perché applica solo le mie poche modifiche alla linea principale invece di applicare tutte le modifiche mainline ai miei pochi).
La mia domanda è: questo importa? Dovrei preoccuparmi della direzione della mia fusione? Sto risparmiando spazio se faccio questo? (Fare hg log --patch --rev tip
dopo l'unione suggerisce così.)
Ciò è particolarmente importante se si sta utilizzando [Hg-Git] (http://hg-git.github.com/), perché traccia la posizione dei rami virtuali di Git usando i segnalibri. Se ti unisci nel modo sbagliato, il segnalibro di ramo Git non si muoverà e non avrai nulla da spingere. –
L'unione di 200 in 195 non è garantita per spostare il segnalibro in avanti a 201. Se si esegue 'hg update my-stuff; hg merge 200', ma se si esegue 'hg update 195; hg unione 200 'non lo farà. L'aggiornamento tramite il nome del segnalibro lo rende * attivo *. –