git-svn: come faccio a creare un nuovo ramo svn via git?

Ho un repository git che tiene traccia di un repository svn. L’ho clonato usando --stdlayout .

Ho creato un nuovo ramo locale tramite git checkout -b foobar

Ora voglio che questo ramo finisca in …/branches/foobar nel repository svn.

Come faccio a farlo?

(ha tagliato un sacco di testo investigativo, vedi la storia delle domande se ti interessa)

So che a questa domanda è stata data risposta qualche tempo fa, ma dopo averlo letto, potrei aiutare ad aggiungere esempi del comando specifico del ramo svit git e relazionarlo ad un tipico stream di lavoro.

Come ha risposto kch, usa git svn branch . Ecco un esempio completo, (si noti il -n per la prova a secco da testare):

 git svn branch -n -m "Branch for authentication bug" auth_bug 

Se questo va bene, il server risponde con una risposta come questa:

Copia https://scm-server.com/svn/portal/trunk a r8914 a https://scm-server.com/svn/portal/branches/auth_bug

E senza l’ -n il server probabilmente aggiunge qualcosa come:

Trovato ansible punto di diramazione: https://scm-server.com/svn/portal/trunk => https://scm-server.com/portal/branches/auth_bug , 8914

Found branch parent: (refs / remotes / auth_bug)

d731b1fa028d30d685fe260f5bb912cbf59e1971

Seguendo genitore con do_switch

Seguito con successo genitore r8915 = 6ed10c57afcec62e9077fbeed74a326eaa4863b8

(Refs / telecomandi / auth_bug)

La parte migliore è che ora puoi creare un ramo locale basato sul tuo ramo remoto in questo modo:

 git checkout -b local/auth_bug auth_bug 

Il che significa “controlla e crea il ramo locale denominato auth_bug e auth_bug seguire al ramo remoto (ultimo parametro) auth_bug

Verifica che il tuo ramo locale dcommit su quel ramo remoto usando dcommit con --dry-run ( -n ):

 git svn dcommit -n 

E il server SVN dovrebbe rispondere con il nuovo nome del ramo:

Commettendo a https://scm-server.com/svn/portal/branches/auth_bug

a partire da git v1.6.1, il git svn branch è disponibile.

Dai documenti git:

     ramo
         Creare un ramo nel repository SVN.

         -m, --messaggio
             Permette di specificare il messaggio di commit.

         -t, --tag
             Crea un tag usando tags_subdir invece di branches_subdir
             specificato durante git svn init.

Le versioni precedenti di git non forniscono un modo per creare un ramo svn.

@kch I just (7 December 2008) ha compilato il tag v1.6.1-rc1 di git e contiene il comando git svn branch e la documentazione per esso. Quindi la versione v1.6.1 di git dovrebbe (si spera) contenere questo comando.