Configurar en Git un repositorio remoto Subversion
Hay varios motivos por los cuales podrías querer traer la información de un repositorio de código, versionado con Subversion, a tu repositorio de código versionado con Git, desde sincronizar ambos repositorios durante un periodo de transición de gestor de versiones hasta, simplemente, aprovechar las características de git para la gestión de ramas antes de subir nuevo código al repositorio de Subversion. Estos motivos son los que justifican la existencia de git-svn, una característica de Git que nos proporciona comandos para gestionar un flujo bidireccional entre Git y Subversion.
Lo más común es tirar de todo el árbol de Subversion con el siguiente comando:
$ git svn clone https://miRepositorio.com/repositorios/projecto -T trunk -b branches -t tags
Pero lo que te quiero mostrar es como puedes hacer cuando no quieres traer toda la información, sino que quieres traer y trabajar únicamente con una rama del repositorio Subversion. Para ello, debes saber que Git almacena una lista de los repositorios remotos en el archivo .git/config, incluyendo aquellos que has configurado con el comando que te acabo de mostrar arriba, y puedes verlos, una vez que has usado el comando fetch, usando este otro comando que muestras todas tus ramas, tanto locales como remotas.
$ git branch -a
Sabiendo esto, puedes deducir que añadiendo la configuración que nos interesa en dicho archivo, podremos gestionar, desde git, la rama que nos interesa del repositorio Subversion sin tener que hacerle seguimiento a todas. Abajo te muestro un ejemplo para configurar la rama entregas, pero ten en cuenta que la URL que tú necesites dependerá de la estructura de tu repositorio Subversion.
[svn-remote "entregas"]
url = https://miRepositorioSubversion.com/repositorios/projecto/ramas/entregas
fetch = :refs/remotes/subversion/entregas
Con esto añades a Git una configuración para gestionar una rama de un repositorio remoto Subversion, con un referencia, entregas, sobre la que poder usar el comando git svn fetch.
$ git svn fetch entregas
Si vuelves a comprobar la lista de ramas con git branch -a deberías ver algo similar esto:
$ git branch -a
master
netlify
* writting
remotes/gitlab/master
remotes/gitlab/netlify
remotes/gitlab/writting
remote/subversion/entregas
¡Observa que nuestra nueva rama remota está en la última línea de la salida del comando!