C'è un modo per associare un gruppo di changeset Mercurial con un ramo nominato dopo che sono stati commessi, cioè retroattivamente?Filiale con nome retroattivo in Mercurial
risposta
No, i nomi dei rami fanno parte del changeset (è davvero come un'etichetta che si aggiunge al commit), significa che l'hash del changeset dipende dal nome del ramo.
Quindi l'unico modo per cambiarlo in modo retroattivo è riscrivendo la cronologia (che non funziona bene se hai spostato le tue modifiche altrove, dal momento che dovrai riscrivere ogni repository che contiene le modifiche).
Per riscrivere la cronologia, è possibile utilizzare ad esempio mq.
Non una soluzione completa ma, senza riscrittura della cronologia; puoi taggare l'ultima serie di modifiche nel ramo senza nome. Se non si ricomincia da questo il tag dovrebbe surfice. Se hai bisogno di riarrangiarti, puoi passare a un ramo nominato dopo il changeset con tag.
Volevo solo farlo, ed ecco la soluzione che ho trovato. È passato un anno da quando la domanda è stata posta originariamente, questo potrebbe spiegare perché ora posso trovare una soluzione. Ha lo svantaggio di creare una revisione extra nel processo, ma non è stato male per me.
Per prima cosa, si torna al punto in cui si desidera creare il ramo. Nel mio caso, in realtà volevo iniziare una nuova radice (perché non ero molto sensibile quando ho avviato il repository, ma comunque), quindi sto aggiornando su null. Probabilmente vuoi iniziare da qualche altra parte, dipende dalla tua situazione.
$ hg update null
Quindi, creare il ramo.
$ hg branch blah
$ hg commit -m "Created blah branch."
Poi, abbiamo REBASE tutti i commit che abbiamo fatto sul nostro nuovo ramo:
$ hg rebase -s SOURCE -d DEST
Il SOURCE qui dovrebbe essere il primo commit hai fatto nei commit si desidera creare il ramo da, e il DEST dovrebbe essere il commit in cui è stato creato il ramo (quello che abbiamo commesso sopra).
- 1. Nascondere una filiale in Mercurial/TortoiseHg
- 2. Come mostrare il log git con il nome della filiale
- 3. Creare una nuova filiale con informazioni d'inseguimento
- 4. Modificare il messaggio di commit SVN in modo retroattivo?
- 5. Punto esclamativo rosso in Eclipse con mercurial
- 6. Subversive: modifica il messaggio di commit SVN in modo retroattivo?
- 7. Cambia autore in mercurial
- 8. jsTree aprire una filiale
- 9. Come passare a Git con attenzione in una nuova filiale
- 10. Checkout esistente filiale remota
- 11. Change filiale madre
- 12. come chiudere una filiale in git
- 13. Come risolvere l'errore hg-fast-export: "Il nome della filiale non è conforme agli standard GIT: refs/heads/master"
- 14. Controllare in singolo file con Mercurial?
- 15. Stack di integrazione continua su Windows con Mercurial + Mercurial Queues?
- 16. Collisione ripiegabile con il caso Mercurial HG?
- 17. Filiale di alias per l'ultima versione in Git
- 18. Impostazione del nome utente nel file Mercurial .hgrc
- 19. Utilizzo di Mercurial con Perforce
- 20. Converti cvs in mercurial
- 21. Push filiale diversa per Heroku
- 22. Moduli Google - Filiale condizionale istantanea
- 23. Eliminare una filiale a TortoiseSVN
- 24. Rinomina di un ramo con commit in Mercurial
- 25. Eliminazione di una filiale remota
- 26. Parametri di pull Mercurial (HG): nome utente e password
- 27. Doing Releases con Maven/Hudson/Mercurial
- 28. Come gestire lo sviluppo concorrente con mercurial?
- 29. Soft link in Mercurial
- 30. Ramificazione in Mercurial
Grazie, ha funzionato perfettamente. Questa dovrebbe essere la risposta accettata. –
Funziona (penso), ma ha il potenziale problema che non funzioni bene se hai condiviso il tuo repository con chiunque (come note @tonfa indirettamente). Come note [rebase extension] (http://mercurial.selenic.com/wiki/RebaseExtension), _Non dovresti rifare i changeset che sono già stati condivisi con altri. Fare così costringerà tutti gli altri a eseguire lo stesso rebase_ –
Per coloro che lavorano in mercurial hg, è necessario abilitare l'estensione di rebase in Impostazioni. – amaidment