Configuración de Gerrit con un espejo Git de un repository de Subversion

En el trabajo, actualmente usamos Subversion para SCM. He configurado un espejo gitsvn 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 repository svn. También me gustaría probar Gerrit junto a este ejercicio.

La configuration que imagino es algo en esta línea:

  1. Un espejo git para el repository svn. La twig principal en esto está sincronizada con el tronco en svn.

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

  3. Una aplicación web gitweb o similar para ver el repository en el browser.

  4. Un process similar para otras twigs 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?

Es posible configurar un espejo Git que esté sincronizado con el repository SVN

Instale SubGit en su repository SVN:

$ subgit install path/to/svn/repository 

Luego solo configure el acceso al repository de Git vinculado creado (ruta / a / svn / repository / .git) usando Apache o lo que sea. Cada inserción en ese repository Git se traducirá a una revisión SVN y viceversa.

Por lo tanto, puede usar el repository de Git vinculado en Gerrit y para su equipo (como si SVN nunca existiera). Después de eso, puede cerrar el repository SVN (o continuar usando). Para detener la synchronization antes de cerrar la ejecución:

 $ subgit uninstall path/to/svn/repository 

Lamentablemente, no es posible hacer esto automáticamente (al less, no sin mucho trabajo). Aquí hay algunos pasos que pueden acercarlo:

  1. Configura tu clon git en el server de Gerrit
  2. Cree un enlace svn o una tarea periódica que se obtendrá de svn y presione a su clon git
  3. Gerrit tiene una versión incorporada de gitweb, por lo que estás cubierto allí
  4. En el server de Gerrit, crea un gancho de cambio fusionado que retrocederá a svn

Al igual que Greg mencionado anteriormente, cuando el paso 4 falla, las cosas serán difíciles. Deberá reiniciar el repository 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 rest de tu equipo para que suelte svn y use git / Gerrit 🙂

¡Buena suerte!