2010-09-07 21 views
16

¿Hay un programa que hace lo que hace git-svn, pero en una situación donde el repositorio en el servidor es git, y el desarrollador usa svn?RW Accede al repositorio de git usando svn (git-svnserver)?

Sé que github.com permite el acceso de svn a los repositorios de git que alojan, pero no parece que hayan lanzado este proyecto de código abierto (¿todavía?), Y usar sus servidores no es una opción para mí (ni siquiera sus repositorios privados).

EDIT: Creo que lo que estoy buscando es un paralelo a 'git-cvsserver' - git-svnserver. En un poco de búsqueda, encontré algunos hilos de 2-3 años en la lista de correo git, pero no parece que nadie haya progresado significativamente. Espero que alguien pueda corregirme sobre eso.

¿Hay algún proyecto de git-svnserver actualmente en curso? Odiaría tener un esfuerzo duplicado, pero parece que GitHub is the farthest along, pero nadie más puede tenerlo.

Respuesta

0

Creo que el enlace git-svn está destinado a ser manejado por git (para supervisar - rebase o dcommit - una rama SVN).
Lo que significa que primero puede clonar cualquier repositorio git que necesite en su servidor local (donde también usa SVN), y usarlo para los comandos 'git-svn' entre su repositorio Git local y su espacio de trabajo SVN.

Una vez que el repositorio Git local refleje adecuadamente su repositorio SVN, puede volver al servidor remoto de Git.

+0

No estoy seguro de que esto haga lo que quiero. Esto es solo para mis compañeros de trabajo que no quieren cambiar a git, porque todo lo que hacen en svn ahora es checkout/update/commit de todos modos. Si alguna vez tuvieron que hacer más, alguien podría ayudarlos a usar git. –

+0

@drhorrible: aún podría ser una solución: un script como [git2svn] (http://repo.or.cz/w/git2svn.git) (ver también http://stackoverflow.com/questions/572893/cloning -a-non-standard-svn-repository-with-git-svn/572898 # 572898) podría configurar su historial de SVN, el git repo estaría ahí para poder recuperar su trabajo de SVN en el repositorio de Git local antes siendo rechazado por los otros usuarios de Git. – VonC

4

Este es el código Python para servir un repositorio git sobre protocolo svn:

http://git.q42.co.uk/git_svn_server.git

+0

Abajo :(¿Alguien tiene un espejo? Me interesaría recoger este proyecto. –

+0

El sitio está arriba, pero el último compromiso fue hace 20 meses. – iGEL

+1

Esto parece muy útil pero no hay documentación. ¿Alguien sabe de un ejemplo, un tutorial, o al menos un README? – nweiler

10

Tome un vistazo a SubGit.

SubGit es una solución del lado del servidor, permite el acceso de Subversion al repositorio de Git y viceversa. Puede hacer referencia a documenation para más detalles, pero en general es bastante fácil de usar SubGit:

SubGit necesita acceso local al repositorio Git que está empujando a. Crear depósito de la subversión en la misma máquina:

$ svnadmin create $SVN_REPOS 

continuación, ejecute

$ subgit configure $SVN_REPOS 

Este comando crea $SVN_REPOS/conf/subgit.conf archivo, ajustar su opción git.default.repository simplemente de la siguiente manera:

[git "default"] 
    repository = /path/to/your/git/repository.git 

Puede especificar muchas Git repositorios sincronizados con un único repositorio de Subversion, simplemente agregue las secciones necesarias [git "identifier"].

También puede especificar el diseño de repositorio arbitrario, p. el estándar es el siguiente:

trunk = trunk:refs/heads/master 
    branches = branches/*:refs/heads/* 
    shelves = shelves/*:refs/shelves/* 
    tags = tags/*:refs/tags/* 

También puede ajustar $SVN_REPOS/conf/authors.txt para asignar nombres de autor SVN a GIT identidades.

Después de que se ejecutan:

$ subgit install $SVN_REPOS 
    $ ... let initial translation complete ... 
    $ TRANSLATION SUCCESSFUL 

En este momento usted tiene depósito de la subversión y su contraparte Git que se sincroniza de forma continua, es decir SubGit traduce inmediatamente revisión SVN en git commit en cada svn commit y git commit en la revisión de SVN en cada git push.

Por lo tanto, puede confirmar los cambios en el repositorio de Subversion creado y mantener todos los cambios sincronizados con el repositorio principal de Git.

+0

Gracias por compartir esto! Voy a tenerlo en cuenta, y espero que para cuando esté listo para la producción, mi empresa está lista para probarlo. –

2

SVNGit es exactamente lo que quiere. Es una biblioteca de servlets de código abierto para que los clientes de SVN accedan a los repositorios de Git.

Cuestiones relacionadas