Git svn work flow, haciendo branchs en git-svn

git version 1.7.3.3 

Tenía un proyecto que estaba usando git.

Nuestra compañía cambió su política y quería que todos cambiaran a svn.

Así que importé mi proyecto en subversión utilizando el layout estándar (troncales, twigs y tags).

Entonces mi flujo de trabajo actual es el siguiente:

Haga algunos cambios, colóquelos en el área de ensayo y luego compromételos a hacer git. Sin embargo, me confundo un poco cuando se trata de svn. Primero rebase para get los últimos cambios de subversión. Entonces hago un compromiso.

es decir

Etapa de los files de cambio

 git stage app_driver.c 

Compromételos a hacer git

 git commit -m"Added some changes" 

Recibe los últimos cambios de svn

 git svn rebase 

comprometer mis últimos cambios a svn

 git svn dcommit 

empujar los cambios a mi repository git

 git push upstream my_project 

Sin embargo, la verdadera confusión viene cuando hago una nueva twig en git, y cómo puedo comprometerme con esa twig en subversión.

 git checkout -b add_new_feature 

Entonces, ¿cómo puedo crear la nueva twig en svn y confirmarla?

Muchas gracias por las sugerencias,

Lo que hago normalmente es crear una twig en subversión usando svn copy.

Por ejemplo, supongamos que mi troncal está en https: // svnserver / svn / MyProject / trunk y quiero crear una twig en https: // svnserver / svn / MyProject / branches / my-branch , lo haría:

 svn copy https://svnserver/svn/MyProject/trunk https://svnserver/svn/MyProject/branches/my-branch 

Ok, esto eliminaría la creación de la twig svn, pero para search esta twig con git, iría a mi directory y haría un git svn fetch. Esto captaría cosas de svn pero no modificaría sus twigs actuales.

Si comenzó su proyecto con git svn init –stdlayout, su twig aparecerá cuando haga una twig git -r. A continuación, puede verificarlo con algo como esto:

 git checkout -b my_local_branch_name my_remote_branch_name 

Nota: no use el mismo nombre para su sucursal local y para su sucursal remota o git se quejará (aunque funciona).

Entonces puedes trabajar como siempre.

Me gustaría hacer la twig en subversión primero en este caso, ya que parece que quieres tener una twig de desarrollo a largo ploop que se fusiona más adelante con los contenidos de / trunk.

Cuando quiero hacer una reparación a corto ploop de lo que está en / trunk, hago lo que quiero hacer:

 git checkout -b add_quick_change 

y cambiar lejos.

Entonces cuando quiero ponerlo en / trunk:

 git checkout master git pull --no-squash . add_quick_change git svn dcommit 

Esto debería copyr todo el historial en master para que termine en subversión después del compromiso.