Acquista ramo remoto usando git svn


188

Ho controllato un repository svn usando git svn. Ora devo controllare uno dei rami e rintracciarlo. Qual è il modo migliore per farlo?

Risposte:


355

Layout Subversion standard

Crea un clone git che includa il tronco, i tag e i rami di Subversion con

git svn clone http://svn.example.com/project -T trunk -b rami -t tag

L' --stdlayoutopzione è una scorciatoia se il repository Subversion utilizza la struttura tipica:

git svn clone http://svn.example.com/project --stdlayout

Fai in modo che il tuo repository git ignori tutto ciò che fa il repository subversion:

git svn mostra-ignora >> .git / info / exclude

Ora dovresti essere in grado di vedere tutti i rami di Subversion sul lato git:

git branch -r

Pronuncia il nome del ramo in Subversion è waldo. Dal lato git, avresti corso

git checkout -b telecomandi waldo-svn / waldo

Il suffisso -svn serve per evitare gli avvisi del modulo

avvertenza: refname 'waldo' è ambiguo.

Per aggiornare il ramo git waldo-svn, eseguire

git checkout waldo-svn
git svn rebase

A partire da un checkout solo trunk

Per aggiungere un ramo Subversion a un clone solo trunk, modificare il repository git .git/configin modo che contenga

[svn-remote "svn-mybranch"]
        url = http://svn.example.com/project/branches/mybranch
        fetch =: refs / remotes / mybranch

Dovrai sviluppare l'abitudine di correre

git svn fetch --fetch-all

per aggiornare tutto ciò che git svnpensa siano telecomandi separati. A questo punto, puoi creare e tenere traccia dei rami come sopra. Ad esempio, per creare un ramo git corrispondente a mybranch, eseguire

git checkout -b telecomandi mybranch-svn / mybranch

Per i rami da cui intendi git svn dcommit, mantieni lineari le loro storie!


Ulteriori informazioni

Potresti anche essere interessato a leggere una risposta a una domanda correlata .


Questo non funziona per me, dato che ho controllato il trunk usando git svn clone .. Non ho impostato i rami per il check-out ... Penso di dover prima farlo.
markovuksanovic,

Il fatto è che ho usato git svn clone svn.example.com/project/trunk E ora non so come impostare altri rami da tracciare senza perdere il mio repository corrente ...
markovuksanovic

20
Suggerirei di fornire un prefisso per i telecomandi svn. (aggiungi --prefix=svn/quando lo fai git-svn inito git-svn clone) Ciò eliminerà la necessità di aggiungere un suffisso sulle filiali locali.
Jasonkarns,

Se hai diverse filiali non dimenticare di fare "git checkout master" prima di occuparti di un'altra branche
Eildosa,

Se gli show-ignoreerrori vengono eliminati, provaregit svn show-ignore -i trunk
Antti Haapala il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.