No. Su mejor opción sería configurar un espejo del repositorio svn en un repositorio git dedicado.
git svn clone -s http://subversion.example.com/ mysvnclone
cd mysvnclone
git remote add origin [email protected]:project.git
git push origin master
Luego puede agregar el repositorio git como un submódulo al proyecto original
cd /path/to/gitproject
git submodule add git://example.com/project.git -- svn-project
git add svn-project
git commit -m "Add submodule"
Hay una diferencia conceptual entre svn: externos y submódulo git que puede hacer que te tropieces si abordas esto desde un punto de vista de subversión. El submódulo git está vinculado a la revisión que le das. Si "upstream" cambia, entonces debe actualizar la referencia de su submódulo.
Entonces, cuando volvemos a sincronizar con la subversión ascendente:
cd /path/to/mysvnclone
git svn rebase
git push
... el proyecto git seguirá utilizando la revisión original que comprometimos anteriormente. Para actualizar al svn HEAD, deberías usar
cd /path/to/gitproject/svn-project
git checkout master
git pull
cd ..
git add svn-project
git commit -m"Update submodule"
Acabo de pasar por eso. Estoy haciendo algo similar a rq, pero un poco diferente. Configuré uno de mis servidores para alojar estos clones git de los repositorios svn que necesito. En mi caso, solo quiero versiones de solo lectura y necesito un repositorio simple en el servidor.
En el servidor que ejecuto:
Esto configura mi repositorio simple, luego tengo un script cron para actualizarlo:
Esto también requiere fix-svn-refs.sh de http://www.shatow.net/fix-svn-refs.sh Esto se inspiró principalmente en: http://gsocblog.jsharpe.net/archives/12
No estoy seguro de por qué
git gc
se necesita aquí, pero no pude hacerlogit pull
sin él.Entonces, después de todo esto, puede usar git submodule siguiendo las instrucciones de rq.
fuente
Actualmente git-svn no es compatible con svn: externals . Pero hay otras dos herramientas que pueden ayudarlo:
SubGit
SubGit es una solución del lado del servidor, permite el acceso de Git al repositorio de Subversion y viceversa. Puede consultar la documentación para obtener más detalles, pero en general es bastante fácil usar SubGit:
El comando anterior detectará el diseño de ramas en el proyecto SVN y luego creará un repositorio vacío vacío de Git listo para reflejar el proyecto SVN. Es posible que se le soliciten las credenciales a menos que ya estén almacenadas en el caché de credenciales SVN en el directorio ~ / .subversion. También puede ajustar
$GIT_REPO/subgit/authors.txt
para asignar nombres de autores SVN a identidades Git.En este momento tiene el repositorio Subversion conectado al repositorio Git recién creado. SubGit traduce la revisión de SVN en Git commit en cada
svn commit
y Git commit en la revisión de SVN en cadagit push
.Todo lo que necesita más es hacer que el repositorio de Git esté disponible para los encargados. Echa un vistazo a git-http-backend para eso. Luego puede agregar el repositorio Git creado como un submódulo habitual. SubGit también está disponible como complemento para Bitbucket Server, para obtener más información, consulte aquí . Por lo tanto, no hay necesidad de usar herramientas externas como git-svn o cualquier otra.
SubGit es un software propietario, pero es gratuito para pequeñas empresas (hasta 10 comisionadores), proyectos académicos y de código abierto.
SmartGit
SmartGit reemplaza git-svn en el lado del cliente. Puede encontrar más información sobre sus características aquí .
En particular, SmartGit admite submódulos git y svn: externals , puede mezclarlos en su repositorio.
SmartGit es un software patentado pero es gratuito para uso no comercial.
fuente
subgit
( subgit.com/documentation/… ) como elsmartgit
soportansvn:externals
de la misma manera un.gitsvnextmodules
archivo explícito en una copia de trabajo. Lo que significa que todavía tiene que usar este software para pagar externos y no puede usar lagit
utilidad básica para retirarlos directamente desde un servidor externo git hub comogithub
ogitlab
. Por lo tanto, las fuentes publicadassnv:externals
en un servidor git hub externo no serán observables y descargables sin este software, que sigue siendo un problema importante.Además de lo que dijo rq, otro método sería utilizar el proyecto "externo" de terceros ( http://nopugs.com/ext-tutorial ), que imita mejor cómo funcionan las referencias externas svn. Con los elementos externos, puede realizar un seguimiento de los repositorios git o svn, y parece más fácil llevar sus cambios corriente arriba a esos repositorios. Sin embargo, requiere que los miembros del proyecto descarguen e instalen el paquete por separado.
Todavía no he usado submódulos o externos; Sin embargo, he pasado algunas horas leyendo sobre todas las alternativas y parece que las externas se adaptarán mejor a mis necesidades. Hay una excelente discusión sobre estos y otros métodos personalizados en el Capítulo 15 de "Control de versiones con Git", por Jon Loeliger ( http://oreilly.com/catalog/9780596520120 ), que recomiendo encarecidamente.
fuente
Piston se está reescribiendo para admitir esto, y viceversa, más la URL de Subversion existente en un repositorio de Subvresion y git + git.
Echa un vistazo al repositorio de pistón Github .
Lamentablemente, no parece haber sido lanzado.
fuente
Bueno, hay
git-remote-testsvn
, así que supongo que algo asíDeberia trabajar. ¿Lo hace?
fuente