Use git en el repository SVN existente

Trabajo con un repository svn henetworkingado. Sin embargo, me gustaría disfrutar de los beneficios de git en mi máquina local.

  • La primera opción es git init la raíz de mi repository actual, escribir código y cometer el código de manera local ( git commit ) y de forma remota ( svn commit ).
  • La segunda opción es git-svn , pero no sé si vale la pena el problema de aprender los matices de una nueva herramienta.

¿Cómo debo ir sobre esto?

Yo recomendaría fuertemente git-svn . Yo y algunos de mis colegas hemos intentado usar un Git repro encima de uno de Subversion, y es un process hecho de dolor y horror.

Es cierto que esto es para Subversion 1.6.x; Sospecho que sería mejor con 1.7.x, ya que solo tiene un directory .svn .

  • La actualización desde el repository requiere extraer las actualizaciones de Subversion y luego confirmarlas con Git. Eso es lento y tedioso (es cierto que es bastante lento con git-svn , pero al less eso automatiza el process).

    Además, o terminas descargando cada commit con Subversion y comprometiéndolo manualmente en Git, o terminas cometiendo un montón de commits de Subversion en el repository de Git, y $deity te ayuda si alguna vez quieres trabajar en una revisión de Subversion entre tu Git comete

  • Git no puede manejar directorys vacíos, Subversion los requiere para el formatting de sus directorys .svn . Lo que significa que debes mantener tus repositorys .svn fuera del repository de Git, por lo que cualquier operación de git checkout también necesitará una svn up separado.

  • Como notas, necesitarás comprometer todo por separado.

Entonces, usando Subversion y Git por separado, tendrás que hacer casi todas las operaciones tanto en Git como en Subversion. Lo que significa que todo lleva más time, y obtienes todas las desventajas de ambos sistemas, mientras que ambos hacen un buen trabajo atornillando las ventajas de los demás.

Use git-svn, es realmente simple. Primero clone su repository con git svn clone luego puede git svn dcommit your work o git svn rebase it en los últimos cambios. Asegúrate de que tu historial sea siempre lineal, siempre modificando las twigs locales en master para que puedas unirlas con git merge --ff-only .

La mejor manera sería migrar a git y tirar SVN.

Sin embargo, si esa no es una opción, use git-svn .

Al comprometerte a git / svn por separado, lo más probable es que termines comprometiéndote con SVN solo muy raramente, lo que resultaría en que otros desarrolladores terminen cometiendo grandes commits.

Puede probar el proyecto SubGit . Instale SubGit en su repository SVN; se creará una interfaz Git pura (Git real, no git-svn) para el repository SVN. Después de eso, puede usar las dos interfaces: SVN o Git para su repository.

Si no tiene acceso a su server SVN, hay otra opción para recomendar: cliente SmartGit . Se comporta de manera similar a git-svn, pero propone más características (tags, ignora, event handling EOL, selects de cereza).