Jun
17
- Repositorio central con subversion y posibilidad de trabajar offline con git en máquina local. Cuando el desarrollador vuelva a estar online puede comitear los cambios al repositorio central de subversion. Con tu copia de trabajo puedes trabajar offline puedes decir. Si pero no tienes ninguna de las capacidades de un control de versiones disponible.
- Repositorio central con subversion donde no se desea aumentar el número de ramas. Los desarrolladores pueden hacerse con el código en git y hacer ramas y otros repositorios clonados mientras dure el desarrollo de una característica específica luego se reúne el código y se comitea a subversión.
Veamos como puedes mezclar lo mejor de los dos mundos.
Para poder empezar debemos tener instalado subversion git y git-svn. En distros tipos debian/ubuntu podemos ejecutar:
$ sudo apt-get install subversion git git-svn
Para conocer un poco de subversion sigue la serie de artículos sobre subversion.
Para conocer un poco de git visita este tutorial introductorio sobre git
Ok pues partimos de que tenemos la rama principal de desarrollo (trunk) con un repositorio central subversion en esta url
http://svn.midominio.com/miproyecto/trunk
creamos un directorio para nuestra copia de trabajo y entramos en ella
$ mkdir working-copy
$ cd working-copy
A continuación para inicializar el repositorio git ejecutamos:
$ git-svn init http://svn.midominio.com/miproyecto/trunk
Para traernos el código de la revisión HEAD:
$ git-svn fetch -rHEAD
Trabajamos con normalidad con git y comiteamos los cambios primero en este repositorio:
$ git commit -m "Cambios en git"
Si queremos actualizar el repositorio gitr respecto a posibles cambios en el repositorio central ejecutamos
$ git-svn rebase
Y si queremos comitear a subversion
$ git-svn dcommit
Si encontramos un conflicto debemos resolverlo de la siguiente manera
Tras comitear en git
$ git commit -m "Tal vez encontremos conflictos"
Pedimos actualización (si primero ejecutamos un git-svn dcommit nos dará error 'Transaction is out of date'):
$ git-svn rebase
Esto nos informará de los ficheros con conflictos. Editamos el/los ficheros con conflictos hasta resolverlos. Luego comiteamos en git estos cambios con:
$ git add .
y luego
$ git rebase --continue
para finalmente ejecutar:
$ git-svn dcommit
Que llevará los cambios al repositorio central de subversion.
$ sudo apt-get install subversion git git-svn
Para conocer un poco de subversion sigue la serie de artículos sobre subversion.
Para conocer un poco de git visita este tutorial introductorio sobre git
Ok pues partimos de que tenemos la rama principal de desarrollo (trunk) con un repositorio central subversion en esta url
http://svn.midominio.com/miproyecto/trunk
creamos un directorio para nuestra copia de trabajo y entramos en ella
$ mkdir working-copy
$ cd working-copy
A continuación para inicializar el repositorio git ejecutamos:
$ git-svn init http://svn.midominio.com/miproyecto/trunk
Para traernos el código de la revisión HEAD:
$ git-svn fetch -rHEAD
Trabajamos con normalidad con git y comiteamos los cambios primero en este repositorio:
$ git commit -m "Cambios en git"
Si queremos actualizar el repositorio gitr respecto a posibles cambios en el repositorio central ejecutamos
$ git-svn rebase
Y si queremos comitear a subversion
$ git-svn dcommit
Si encontramos un conflicto debemos resolverlo de la siguiente manera
Tras comitear en git
$ git commit -m "Tal vez encontremos conflictos"
Pedimos actualización (si primero ejecutamos un git-svn dcommit nos dará error 'Transaction is out of date'):
$ git-svn rebase
Esto nos informará de los ficheros con conflictos. Editamos el/los ficheros con conflictos hasta resolverlos. Luego comiteamos en git estos cambios con:
$ git add .
y luego
$ git rebase --continue
para finalmente ejecutar:
$ git-svn dcommit
Que llevará los cambios al repositorio central de subversion.




0 Referencias