2013-02-20 17 views
16

In un repository mercuriale, il ramo "predefinito" è caduto molto vecchio al punto in cui non ha più senso unire i cambiamenti da "sviluppare" ", una diramazione con l'ultima versione dell'applicazione.Mercurial - chiude il ramo predefinito e sostituisce con un ramo denominato come nuovo predefinito

Invece di unire si sviluppa in modo predefinito, come posso chiudere il ramo predefinito corrente e quindi creare un nuovo ramo predefinito utilizzando la testa da sviluppare?

Ho visto alcune altre domande e risposte simili, forse uguali, ma ho ancora difficoltà a capire come dovrebbe funzionare.

Grazie!

+0

alternativa, si potrebbe 'update' di default e' merge' con lo sviluppo, ma prima di eseguire l'unione, ne fai una copia esatta dello sviluppo. – Edward

+0

Che funzionerebbe davvero, ma come posso farlo? – kgx

risposta

24

Se default è discostato un po 'dalla develop e si desidera default essere esattamente lo stesso di develop dopo l'unione, è necessario un insieme leggermente diverso di comandi da ciò che Edward ti ha dato (questo funziona anche dove develop è un discendente diretto di default).

hg update -C default 
hg -y merge --tool internal:fail develop 
hg revert --all --no-backup -r develop 
hg resolve --all --mark 
hg commit -m "merge updating default to current develop" 

Ciò significa che qualsiasi conflitto provocherà un'unione irrisolta. Successivamente, ripristina lo in modo che corrisponda a come nel ramo develop (senza backup in modo da non ottenere molti file .orig rimasti).

+0

Tim ha funzionato perfettamente. Grazie per l'aiuto! Analizzando sia la tua risposta che quella di Edward, ho imparato molto su hg. – kgx

+0

Questa è una soluzione migliore! Grazie! – Edward

+0

Magnifico, grazie –

2

Sulla base di un commento che non è un requisito per chiudere il ramo, ecco una serie di passaggi che dovrebbero ottenere il ramo di default in sintonia con il ramo di sviluppo:

  1. hg update default
  2. hg merge --tool internal:other - per unire privilegiando il ramo sviluppare
  3. hg diff -r develop - confrontare con sviluppare per assicurarsi di avere una copia esatta
  4. hg commit -m "merge updating default to current develop"

Una volta completato, si dovrebbe avere un default aggiornato che rispecchia il ramo di sviluppo, riportandoli in sincrono.

+0

Edward, grazie per la risposta. Ho testato il tuo processo e ho ottenuto il seguente risultato nel passaggio 2: abort: branch 'default' ha una testa - perfavore si fondono con un rev esplicito. Nel mio repo ci sono più di 2 teste a causa di molti altri rami con nome attivo. Ad ogni modo, questa soluzione iniziale ha chiaramente fatto girare la palla, quindi grazie ancora.Anche l'hg diff -r è un comando utile che non ho mai visto prima. – kgx

0

Penso che sia meglio usare un concetto in Tortoise per spiegare come funziona.

  • hg update per sviluppare ramo
  • scegliere il capo del ramo di default, e scegliere fondersi con locali
  • quindi scegliere annullare tutte le modifiche da destinazione di unione (altro), Default quindi viene fusa per incorporazione in svilupparsi senza influenzare il sviluppare
  • poi ramo di default dalla testa di sviluppare, utilizzare hg branch default, riavvio di default di nuovo
Problemi correlati