2012-11-28 22 views
7

Sto usando git-svn per gestire un repository Subversion usando git. Di solito ho un gran numero di rami git in qualsiasi momento.Come eseguire git svn rebase su tutti i rami

Spesso ho bisogno di aggiornarli per abbinare l'ultimo codice nel repository, ma trovo un dolore per eseguire git checkout <branch>; git svn rebase per ogni ramo.

C'è un modo più semplice per farlo rispetto alla scrittura di uno script (che avrebbe bisogno di gestire i conflitti)?

EDIT: Dal momento che la parte più lenta del processo sta contattando il server sovversione e il download degli aggiornamenti, è più veloce di eseguire git svn rebase su un ramo e poi git svn rebase --local sul resto.

C'è un modo ancora migliore?

+0

Interessante domanda che mi piacerebbe sapere se c'è un modo più semplice. Ma per quanto ne so non c'è scorciatoia. Lavori davvero su tutti questi rami? – Konst

+0

Di solito sto lavorando a una serie di lavori di sviluppo contemporaneamente. Inoltre, mi piace tenere aggiornati tutti i rami su cui non sto lavorando al momento, perché altrimenti ho la tendenza a scoprire che devo fare dolorose fusioni più avanti. –

risposta

4

penso che la tua modifica ha la soluzione sul naso:

Dal momento che la parte più lenta del processo è contattare il server sovversione e il download degli aggiornamenti, è più veloce di eseguire git svn rebase su un ramo e poi git rebase git-svn sul resto.

Io lavoro anche con un sacco di rami git locali per i miei repository git-svn e mi trovo a ridistribuirli ogni giorno per mantenerli il più vicino possibile al ramo remoto. Utilizzare un singolo ramo di tracciamento per tracciare il ramo remoto, e quindi ribasare/unire ogni ramo da quello sembra essere il mezzo più efficace per gestire questa particolare situazione dalla mia esperienza limitata.

+0

Molto vero. Non c'è davvero alcun modo per rebase tutti in una volta, a meno che non vengano rebase senza conflitti. Devi praticamente sistemare i rebase in serie. – quickshiftin