Copia de trabajo de Git dentro de un repository de Subversion

Tengo un proyecto en el trabajo, y utilizamos Subversion para controlar todas las versiones. Sin embargo, tenemos un cliente para un proyecto en particular que ha usado Git para algo que debo verificar y poner en nuestro repository de proyectos. Normalmente solo verificaría el repository de Git, lo exportaría a mi copy de trabajo de SVN, versionaría los files y terminaría. Sin embargo, el chico regularmente actualiza este código, y necesito permanecer cerca de donde él está.

¿Qué pasaría si acabo de ver el repository Git en mi copy de trabajo SVN y la versión de los files?

NOTA: Git-svn no es una opción, nunca lo he usado y, desafortunadamente, no tengo time para aprender algo nuevo para esto.

Solo clona el repository de Git. No pasa nada malo y podrás actualizar ese código haciendo la git update . Puedes enviar un repository git de forma segura a la subversión, lo he hecho antes.

No hay problemas técnicos con esto, pero terminará siendo una molestia. Cada vez que realice un cambio, deberá enviarlo a Git, luego agregar todos los files nuevos que se crearon en el repository de Git a Subversion y luego enviarlo a Subversion. Cuando fusionas cualquiera de sus cambios, deberás hacer todo eso también.

Una pregunta que tengo es por qué querrías hacer esto; ¿Qué beneficio obtienes al tenerlo en Subversion? Si va a necesitar combinar los cambios con su repository en sentido ascendente, entonces deberá aprender Git de todos modos. En ese punto, también podría usar Git para hacer su control de versión, y no complicar las cosas tratando de integrarse con Subversion. Si solo vas a enviarle el código final y dejar que lo integre, ¿por qué molestarse en revisar el repository de Git en Subversion? Simplemente haga lo que hace normalmente, compruebe la copy actual en Subversion, trabaje en ella y luego envíele el resultado final cuando haya terminado.

git-svn sería útil si la copy oficial del código estaba en Subversion, pero quería trabajar con Git porque prefiere Git. No es tan útil para trabajar con un proyecto upstream que se administra en Git cuando se quiere trabajar con herramientas de Subversion.

La solución propuesta debería funcionar como git y svn tienen diferentes metafiles, y siempre que no agregue los metfiles de un sistema de control de versiones al otro, no hay conflicto entre ellos.

Sin embargo, tenga en count que cada vez que cambie sus files deberá agregarlos tanto a git como a subversión, y por lo tanto deberá lidiar con dos sistemas de control de files diferentes.

Como usted insinúa, usar git-svn lo ayudaría, ya que le permitiría trabajar solo con git y luego usar git-svn para sincronizar con su repository central de svn. Estoy haciendo esto en el trabajo, y es muy simple de hacer y funciona sin problemas (la mayoría de las veces). Consideraría aprenderlo, yo era tu. Tendrás que aprender git en cualquier caso para trabajar eficientemente con el cliente, y aprender git-svn es relativamente simple. Básicamente, solo tienes tres commands:

  • git svn fetch – para get los últimos cambios de svn a su repository
  • git rebase git-svn – para incorporar los cambios svn
  • git svn dcommit – para comprometerse con el repository svn

Aprender git vale la pena, ya que al final, considero que es muy superior a svn.