20

Ho sentito che l'unico modo per creare un ramo in un repository Mercurial è apportare modifiche nella copia di lavoro, quindi trasferirle a un nuovo ramo.Mercuriale: creare una succursale senza dover apportare prima una modifica

In Subversion, posso creare un ramo senza dover apportare modifiche (copiando trunk in un percorso sotto tags) - è possibile farlo anche in Mercurial?

Al momento ho visto solo TortoiseHg, quindi è possibile che ciò avvenga solo tramite lo strumento da riga di comando e io non lo so.

mio flusso di lavoro per questo è:

  • Crea ramo di caratteristica.
  • Alcuni lavori in quel ramo di funzionalità.
  • Creare un ramo candidato alla release.
  • Unisci le caratteristiche per rilasciare il ramo candidato.
  • Distribuire, testare, correggere distribuire, verificare, correggere il ramo candidato di rilascio.
  • Unisci il ramo candidato alla derivazione.

Molte grazie in anticipo.

+5

C'è un crescente consenso che rami con nome non sono una buona misura per modifiche delle funzionalità a livello di Mercurial perché non possono mai essere cancellato, solo nascosto. Molte persone preferiscono riservare i rami nominati per concetti di lunga durata come "stabile" e "spettrale" e utilizzare rami anonimi, segnalibri o cloni-come-rami per funzionalità e bug. Ecco un ottimo articolo: http://stevelosh.com/blog/2009/08/a-guide-to-branching-in-mercurial/ –

risposta

30

Dipende da cosa intendi per ramo.

Un ramo denominato può essere creato assegnandogli un nome e quindi impegnandosi, finirà come un nuovo changeset nella cronologia, ma non è necessario modificare esplicitamente alcun file nella cartella di lavoro in essere autorizzato a impegnarsi.

hg branch NEWNAME 
hg commit -m "Created branch NEWNAME" 

È anche possibile farlo utilizzando la finestra di dialogo TortoiseHg.

Tuttavia, se si desidera creare un altro ramo senza nome, vale a dire. solo un'altra testa, allora sì, devi cambiare qualcosa. E davvero, perché vorresti semplicemente creare un changeset vuoto senza modifiche? Solo per segnalare che "è qui che posizionerò il mio ramo quando avrò dei cambiamenti"?

+0

Per rispondere alla tua domanda, è qui che il prossimo cambiamento sarà effettivamente il risultato di unire. TortoiseHg non consentirebbe che il risultato di un'unione venga eseguito in un luogo diverso da uno dei due "input" per l'unione, a meno che non abbiamo creato prima un ramo.Tuttavia, il processo di branch denominato descritto sopra risolve il mio problema molto bene, grazie. –

+0

Dannazione, ho svalutato involontariamente. Si prega di fare un po 'di modifica che posso upvote ... – Matz

6

Si potrebbe voler controllare il bookmarks extension (che sarà presto parte del nucleo Mercurial).
Se hai familiarità con come funzionano i rami in git, allora è quasi la stessa cosa.

E proprio come i rami in git, è possibile creare un segnalibro senza commettere nulla.

$ hg bookmark my-feature 
1

Dopo aver creato il ramo non dimenticare di spingere con:

hg push --new-branch 
Problemi correlati