Vorrei suddividere i moduli distribuiti con un'applicazione più grande in sottomoduli separati e mantenere la possibilità di eseguire il pull up da monte.Uso ripetuto di git-filter-branch per riscrivere nuovi commit
Quindi questo è più complesso di Detach subdirectory into separate Git repository. Non ho solo usato git-filter-branch una volta ma voglio mantenere la possibilità di effettuare modifiche upstream dopo averlo fatto (e l'upstream non lo ha fatto).
È sufficiente rieseguire il ramo git-filter nella cronologia completa da ora in upstream, inclusi i nuovi commit non trovati nella cronologia riscritta, non è un'opzione in quanto vi sono centinaia di moduli per i quali devo eseguire questa operazione e il numero di commit è avvicinarsi a 100.000.
Immagino che ciò implichi limitare la cronologia solo ai nuovi commit, riscrivendoli e quindi aggiungendoli dopo i commit precedentemente riscritti, ma non sono sicuro di come farlo - e forse c'è un approccio migliore.
Sarebbe bello poter conservare anche i rami e le etichette, ma questo non è assolutamente necessario e se complica le cose in realtà preferirei perdere quelle.
mi piacerebbe anche sapere di questo. Ogni volta che richiamo un repository di dipendenze, devo eseguire di nuovo il filtro-ramo per unire gli aggiornamenti nel mio progetto (non voglio unire l'intero repo in). –
Sono rimasto sorpreso dal fatto che nessuno abbia avuto una risposta, dopo tutto sembra una sfida interessante. Bene, ho fatto qualcosa insieme ma ho dimenticato di postarlo qui. Il tuo interesse mi ha ricordato: qui sotto è la mia soluzione. – tarsius
Hai mai guardato [* git subtree *] (http://github.com/apenwarr/git-subtree/blob/master/git-subtree.txt)? Può suddividere una sottostruttura in un nuovo ramo e, con l'opzione '--rejoin', farlo in modo incrementale. –