2012-02-07 9 views
7

Estoy usando git-svn para trabajar contra el repositorio svn. El diseño es estándar, y he creado el repositorio local con:Cómo sincronizar ramas remotas con troncal usando git-svn

$ git svn clone -s http://mysvnrepo 
(master)$ 

que necesito para trabajar en un equipo remoto (SVN) rama - MyBranch, por lo que creó una sucursal local para realizar un seguimiento de la distancia uno:

(master)$ git checkout -b localMyBranch remotes/MyBranch 
(localMyBranch)$ 

sigo trabajando y comprometiéndose a la rama local como voy, y de vez en cuando me dcommit:

(localMyBranch)$ git svn dcommit 

mientras tanto otras personas están trabajando en el tronco, y de vez en cuando quiero volver a fusionarse los cambios del tronco a mi rama para mantenerlos sincronizados. Ahí es donde me confundo mucho, ya que no pude encontrar una buena información sobre cómo realizar esto. Hasta ahora sé que tengo que hacer:

(localMyBranch)$ git svn dcommit 
(localMyBranch)$ git checkout master 
(master)$ git svn rebase 

¿Ahora qué? He leído que este no es el camino correcto a seguir:

(master)$ git checkout localMyBranch 
(localMyBranch)$ git rebase master 

Como se va a ensuciar la información de mezcla para SVN.

Entonces, ¿cuál es la mejor manera de "rebase" mi rama de svn remota al troncal remoto, conservando la información de combinación para svn?

Respuesta

7

Querrá crear una sucursal de trabajo local para manejar su fusión. La clave es que necesita una sucursal que no esté rastreando activamente una sucursal de svn remota.

Prueba esto:

(localMyBranch)$ git checkout -b merge_work 
(merge_work)$ git merge master 
(merge_work)$ git checkout localMyBranch 
(localMyBranch)$ git rebase merge_work 

y viceversa para los fusiona en dirección contraria.

EDITAR

Si está utilizando git-svn 1.7.7 o superior, hay un ajuste para contar git-svn para poblar la propiedad mergeinfo en el repositorio remoto de configuración:

git config --global svn.pushmergeinfo true 
+0

Gracias. ¿Va a preservar la información de fusión de svn POV? –

+0

Sí, si configura git para hacerlo. Editaré la respuesta para incluir el comando para hacerlo. –

+0

@ jordan002: ¿Realmente funciona? Estoy acostumbrado a hacer como [esto] (http://stackoverflow.com/a/4908930/158074) la respuesta recomienda, pero de esta manera parece ser más simple. Además, la primera línea probablemente sea 'git checkout -b merge_work', ¿verdad? – rsenna

Cuestiones relacionadas