Migrando de subversion a git

Si alguna vez os habéis arrepentido de empezar un proyecto con subversión, tranquilos, hay una forma sencilla de pasaros a git sin perder el historial de cambios.

El primer paso es instalar el programa svn2git que lo podréis encontrar en su repositorio de GitHub. Los pasos para instalarlo están en la misma pagina del repositorio pero os resumo brevemente los pasos que he seguido yo en un centos 6:

Primero instalamos lo necesario para ejecutar git y RubyGems.

1
# yum install git-core git-svn ruby rubygems

Y a continuación instalamos svn2git.

1
# gem install svn2git

Si no os funciona, otra opción que podéis hacer es descargaros directamente svn2git del repositorio y compilarlo.

Una vez instalado, si vuestra estructura es la estándar de svn tal que asi:

1
2
3
4
5
6
7
8
9
10
11
trunk
  ...
branches
  1.x
  2.x
tags
  1.0.0
  1.0.1
  1.0.2
  1.1.0
  2.0.0

Para migrar vuestro proyecto a git solo tenéis que seguir los siguientes pasos:

1
2
3
# git init proyecto.git
# cd proyecto.git
# svn2git http://url_del_repositorio_svn --username <<usuario_de_svn>>

Y una vez finalizado, tendreis vuestro proyecto tal que asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# git branch
* master
# git branch -a
* master
  1.x
  2.x
  tags/1.0.0
  tags/1.0.1
  tags/1.0.2
  tags/1.1.0
  tags/2.0.0
  trunk
# git tag -l
[ empty ]

Si vuestro proyecto no sigue una estructura estándar, podéis probar a indicarle donde esta el trunk para que empiece la importación tomando como trunk la branch indicada. Esto no lo he probado por lo que no se que tal funcionara.

1
# svn2git http://url_del_repositorio_svn --trunk nombre_de_la_branch_trunk

En el peor de los casos, podéis decirle que lo importe todo y el intentara hacer un merge raro según las fechas de los commit, pero yo antes de hacer esto, intentaría migrar las branches una a una creándolas manualmente en git e importándolas con el comando anterior.

1
# svn2git http://url_del_repositorio_svn --rootistrunk

Espero que os sirva de ayuda, a mi me ha ido genial en un proyecto para pasarme a git, ya que en svn empezaba a ser ingobernable.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *