2010-04-23 31 views
7

Tengo un repositorio git primaria para un proyecto de código abiertoEspejo git svn a

quiero reflejar todas las confirmaciones a un repositorio SVN (en code.google.com), ¿es posible?

Respuesta

4

Sí, eso es posible. Use Git's SVN features para importar a un repositorio. Luego puedes retroceder desde allí. Sin embargo, encontrarás que, en su mayor parte, ese git puede mostrar mejor un historial de SVN que SVN y puede mostrar un historial de git.

3

Si su historial de git es lineal, puede intentar usar git-svn. Yo trataría de usar "git svn clone" para importar el repositorio SVN existente (vacío) a git, luego rebase su historial de git existente sobre eso y "git svn dcommit" lo.

Si su historial de git no es lineal (contiene ramas y fusiones), no podrá representarlo correctamente en SVN. En ese caso, le sugiero que use una solución de hospedaje basada en git (por ejemplo, github.com).

3

Me he enfrentado a esta situación en mi trabajo actual. Nuestro repositorio primario de Git tiene historial no lineal, por lo que la solución seleccionada debe manejar esto. La solución que parece funcionar hasta ahora se basa en el repositorio proxy de gitsvn. Tengo un gancho posterior a recibir instalado en el repositorio Git primaria que en su núcleo tiene algo como esto:

export GIT_DIR=$GITSVN_PROXY_DIR/.git 
git pull -Xtheirs file://$GIT_PRIMARY_DIR master 
git svn dcommit 

Después dcommit registro de la historia se reescribe. En la próxima extracción de git del repositorio principal de Git, normalmente tendrías conflictos de mrege. Aquí es donde aparece su opción X. Es una estrategia de fusión que favorece la versión remota de los cambios. ¡En este caso, nos permite resolver conflictos automáticamente! :)

Única desventaja: los mensajes de compromiso de SVN bonitos no son gratis. Se requiere algo de hackeo de git para hacer que contenga toda la información de los mensajes de commit primarios de Git.

+0

¿Estaría dispuesto a compartir la piratería Git que menciona en su último párrafo? –

1

Dudo que sea posible con code.google.com, pero puede configurar su propio repositorio de Subversion e instalar SubGit en él.

Tan pronto como se complete la instalación, tiene un par vinculado de repositorios Subversion y Git. Cada modificación en cualquier repositorio desencadena un gancho SubGit que convierte automáticamente todos los cambios necesarios.

Para obtener más información, consulte documentation y git-svn comparison.

SubGit es un producto comercial, pero para proyectos de código abierto puede obtener una licencia gratuita.