2011-10-15 10 views
7

En el trabajo, actualmente usamos Subversion para SCM. He configurado un espejo git-svn local y lo uso como mi área de trabajo de desarrollo principal. Me siento cómodo con la funcionalidad básica ahora. Otro desarrollador en el equipo también quiere mudarse a Git, por lo que estamos considerando usar un espejo git del repositorio svn. También me gustaría probar Gerrit junto a este ejercicio.Configuración de Gerrit con un espejo Git de un repositorio de Subversion

La configuración imagino es algo a lo largo de estas líneas:

  1. Un espejo git para el repositorio SVN. La rama principal en esto está sincronizada con el tronco en svn.

  2. Para cada característica se crea una rama de tema. Esto está relacionado con Gerrit, sobre el cual ocurre la revisión. Una vez que se aprueba el conjunto de cambios, Gerrit fusiona la rama de tema de nuevo maestro.

  3. Una aplicación web gitweb o similar para ver el repositorio en el navegador.

  4. Un proceso similar para otras ramas en subversión además del tronco.

Básicamente, lo que quiero es que interactúe solo con mi clon git local y la aplicación web Gerrit; empujar los cambios revisados ​​a svn debería suceder automáticamente. ¿Cómo hago para configurar algo como esto?

+0

¿Quién se encargará de los conflictos que ocurran al hacer retroceder los cambios a Subversion? –

+0

@Greg Hewgill Ahem, supongo que cuando Gerrit intente fusionar el cambio a la rama principal, debería fallar. :-) –

+0

Heh, estoy intentando hacer algo similar, aunque solo necesito hacer copias de seguridad de mis ramas de git sin tener que convertirlas en ramas SVN. Muy confundido al ser repetidamente preguntado mi contraseña para 'git push' hasta que noté que había olvidado poner ssh: // al comienzo de la referencia del servidor! –

Respuesta

2

Es posible configurar un espejo Git que estar en sintonía con el repositorio SVN

Instalar SubGit en su repositorio SVN:

$ subgit install path/to/svn/repository 

A continuación, sólo configurar el acceso al repositorio Git creadas (ruta/a/svn/repository/.git) usando Apache o lo que sea. Cada inserción en ese repositorio Git se traducirá a una revisión SVN y viceversa.

Así que puede usar el repositorio de Git vinculado en Gerrit y para su equipo (como si SVN nunca existiera). Después de eso, puede cerrar el repositorio SVN (o continuar usando).Para detener la sincronización antes de cerrar, ejecute:

$ subgit uninstall path/to/svn/repository 
6

Desafortunadamente no es posible hacer todo esto automáticamente (al menos, no sin mucho trabajo). Aquí hay algunos pasos que puede le acercarán:

  1. Configurar el clon de git en el servidor Gerrit
  2. Crear un gancho SVN o una tarea periódica para que se capturen de SVN y empujar a su clon de git
  3. Gerrit ha incorporado en la versión de gitweb, por lo que está cubierto allí
  4. en el servidor de Gerrit, crear un change merged hook lo que empujará de nuevo a sVN

como Greg mencionado anteriormente, cuando falla el paso 4 cosas Wil Seré tramposo Deberá reiniciar el repositorio de git en Gerrit para que coincida con svn y vuelva a enviar su cambio. Esto será mucho más fácil si/cuando convences al resto de tu equipo para que suelte svn y use git/Gerrit :-)

¡Buena suerte!

Cuestiones relacionadas