2013-03-15 16 views
7

Qual è l'equivalente mercurial di git no-forward-forward merge (nel caso in cui un avanzamento veloce sarebbe possibile)?Esiste un equivalente mercuriale per l'unione no-forward-forward?

Modifica

Si supponga di avere un ramo/segnalibro alla tua testa/punta del master/default:

o feature 
| 
o 
| 
o master/default 
| 
... 

Un semplice fusione veloce in avanti si tradurrebbe in:

o feature/master/default 
| 
o 
| 
o 
| 
... 

Un'unione senza avanzamento rapido sarà simile a:

o merge commit - feature/master/default 
| \ 
| o  
| | 
| o 
|/
o 
| 
... 
+0

"Aggiornamento"? Non è quello che si fondono in avanti veloce? Fa solo un aggiornamento? Ovviamente Mercurial non rileverà questo, ma non credo che proverà ad eseguire una fusione. –

+0

Stava chiedendo un'alternativa di fast-forward, non un'alternativa di fast-forward. :) –

+0

Se non riesci a trovarne uno, un dummy si commetterà in master prima che la fusione generi ciò che vuoi? –

risposta

7

Dipende da come hai impegnato il tuo ramo di funzionalità.

Se la funzione è stata sviluppata su un ramo con nome, è possibile ottenere l'equivalente di un'unione non veloce. In effetti, le filiali nominate non possono essere unite in altro modo.

hg update default 
hg branch feature-1 
...work... 
hg commit -m "implemented feature on named branch" 
hg update default 
hg merge feature-1 
hg commit -m "merged feature-1 to default" 

Ciò risulterà in un grafico come questo:

o merged feature-1 to default 
|\ 
| o feature-1: implemented feature on named branch 
|/ 
o 
| 

Questo funziona solo con rami con nome (cioè rami creati usando il comando hg branch). Non funziona per i rami anonimi o i segnalibri.

this thread(collegamento morto) nell'elenco di posta Mercurial che illustra il problema.

+0

Questa sarebbe un'idea per le persone che apprezzano molto la "punteggiatura" di un changeset di unione per la fusione di una funzionalità. Hai un ramo chiamato "nuova funzionalità" e quindi diversi segnalibri all'interno di quel ramo. – Omnifarious

+0

Di gran lunga la parte migliore di questa risposta è l'ultima riga. – Ringding

+0

È possibile eseguire un'unione edipica in Mercurial con teste anonime usando il comando 'debugsetparents'. Vedi: http://hgtip.com/tips/advanced/2010-04-23-debug-command-tricks/#3-simulate-gits-no-ff-merges-with-anonymous-heads. Penso che i comandi di debug non abbiano le garanzie di compatibilità del resto di Mercurial, però. – jwd

Problemi correlati