Sto provando a migrare un repository mercuriale a git, ma il problema è che il repository mercurial ha sottosposizioni (alcune con diramazioni) e molte fusioni e ramificazioni. Mi piacerebbe che il repository git finale conservasse tutta questa cronologia e fosse corretto e completo al momento del check-out delle parti precedenti del repository o di altre filiali. Non ho bisogno che il nuovo repository abbia sottomoduli o sottoalberi, anche se accetterei una soluzione usando anche quella. Alcuni metodi che ho visto uniscono tutti i sottorepos nella parte superiore del nuovo repository come rami, il che significa che il check-out in passato non contiene tutti i file che erano in subrepos. Ho anche provato a importare tutto come rami, reimpostando la testa nel passato, fondendomi e ribellandomi verso l'alto, ma ci sono troppe fusioni e molti conflitti sorgono, anche con --preserve-merges, quindi preferirei evitare questo. Inoltre, non sono riuscito a trovare alcun modo per replicare la cronologia degli aggiornamenti del sotto-dominio in git come cronologia degli aggiornamenti dei sottomoduli. Qualcuno ha qualche idea? Grazie.Il modo migliore per migrare il repository mercuriale con i sottoregisti per git, preservando la cronologia?
5
A
risposta
1
Forse una cosa che potresti fare (ma non sono sicuro che funzioni), è usare hg-git per inviare a un repository git vuoto.
In alternativa, è possibile anche estendere git-cinnabar per supportare la conversione del subrepo in sottomoduli.
1
Avere un problema simile (spostamento di un progetto di Mercurial con subrepositories a Git con un layout unificata) ho intenzione di seguire un approccio di 2 volte:
- convertire i subrepositories in un layout progetto unitario in Mercurial - questo è coperto qui: Join multiple subrepos into one and preserve history in Mercurial
- ora è possibile migrare a Git facilmente, ho trovato la documentazione ufficiale la miglior risorsa, con una nota positiva su come ripulire impegnarsi storia (autori): https://git-scm.com/book/en/v2/Git-and-Other-Systems-Migrating-to-Git#Mercurial
Sono in procinto di testare questo me stesso e aggiornerà questa risposta in base ai risultati ...
posso ottenere il commit sopra usando hg-git, ma che ignora completamente le subrepos. Ho guardato git-cinabro, ma non ha neanche il supporto per il sottorepo. Ho già convertito il repository di base e tutti i subrepos in precedenza, ma non ho ancora trovato un buon modo per combinarli, pur essendo in grado di vedere lo stato storico di tutti i file, compresi i subrepos. – user397114