Inicio > Personal, Resistencia en Cádiz: 1812 > Adios SVN. Hola Git

Adios SVN. Hola Git

Muy buenas.

Desde que comenzé a plantear el proyecto, quise llevarlo para adelante con el sistema de control de versiones Git, pero debido a la “obligación” de usar la forja redIris pues comencé a hacerlo con SVN en local. Una vez pude registrar la forja, me hicieron el favor de añadir el un dump del repositorio al de redIris, lo que me permitió tener las 50 y pocas revisiones que tenía de antes.

Pero SVN no hace más que darme problemas, quebraderos de cabeza…

  • Tener un directorio .svn en cada carpeta es un coñazo, porque como te descuides, copias una donde no es, y puedes cargarte literalmente el repositorio.
  • Al ser un sistema centralizado, si me quedo sin conexión a internet ó si estoy en un sitio donde no tenga dicha conexión, pierdo todo el registro de logs, anteriores revisiones… y eso aunque parece que no, es un coñazo en ocasiones.
  • Relacionado con el punto anterior, el año pasado en una asignatura, trabajé con 2 compañeras en un videojuego que alojamos en redIris, NoCKtMetal (paradillo, a ver si lo retomamos cuando tengamos tiempo) y la verdad que no me parece que redIris sea una forja fiable. Se cae no pocas veces, los repositorios hacen cosas raras en ocasiones…

Así que he decidido cambiar el enfoque, y utilizar un sistema de control de versiones distribuido, y alojarlo en algún repositorio externo para tener un respaldo más fiable. En este punto se planteó que sistema usar, si bazaar ó git. Realmente son muy similares, pero bazaar tiene la pega que puede llegar a crear un repositorio muy muy pesado si haces varias ramas, cosa que tiendo a hacer para probar cosas picando código a muerte :) Además, conozco a más gente que use Git, y el apoyo de la “comunidad” siempre es importante.

Por tanto me he decantado por Git. Si, se que hay alternativas como git-svn que te permite usar git en un servidor SVN, pero me parece un poco guarrería, la verdad. Ahora tengo dos repositorios, el de redIris que será el oficial del CUSL, y uno en Gitorious que será sobre el que trabaje, aunque cada par de dias, haré commit sobre el de servidor del CUSL, para que se tenga constancia oficial de mi trabajo.

Para hacer un clone del repositorio de Gitorious:

git clone git://gitorious.org/resistencia-en-cadiz-1812/resistencia-en-cadiz-1812.git

Para aquellos interesados, voy a poner una pequeña guía de como he migrado el servidor a Git.

1 – Preparación

Lo primero que tenemos que hacer es ver donde vamos a alojar el repositorio Git. Tenemos varias opciones, como Sourceforge, GitHub ó Gitorious. Yo he optado por la última porque era la más sencilla de las 3, y tampoco quería muchas funcionalidades, solo tener un sitio donde alojar mi proyecto. GitHub por ejemplo tiene un enfoque más al desarrollador, y permite alojar software propietario, mientras que Gitorious no.

Bueno, creamos nuestra cuenta de usuario y creamos el proyecto, proceso que no voy a describir porque es trivial, muy similar al de redIris. Ahora es conveniente crearnos unas claves ssh para poder acceder bien al repositorio. Para ello hacemos uso de la herramienta ssh-keygen:

ssh-keygen -t rsa -C "XXXXXX@gmail.com"

Lo cual nos creará dos ficheros, por defecto en ~/.ssh :  id_rsa y id_rsa.pub

Copiamos el contenido de id_rsa.pub al portapapeles, y nos vamos al gestor de claves en Gitorious, en mi caso http://gitorious.org/~pyriku/keys, ó en el panel de usuario, a “Manage SSH Keys”. Una vez ahí, podemos añadir la clave, para que Gitorious nos reconozca como tales a la hora de hacer push al repositorio.

2 – Crear el nuevo repositorio

Vale, ahora vamos a volcar nuestro repositorio SVN de redIris a Gitorious. Para ello primero vamos a crear uno temporal, y luego lo clonamos para borrar basura.

mkdir repo_tmp
cd repo_tmp
git svn init https://forja.rediris.es/svn/cusl4-res-cadiz/trunk/ --no-metadata
git svn fetch

Obviamente este es mi caso XD Las dos primeras órdenes son triviales. La tercera, haciendo uso de git-svn (si no lo teneis instaladlo via repositorio favorito) incializamos el directorio como repositorio. El parámetro –no-metadata, elimina información inútil, pero mantiene el registro de logs, importante :) Con la última orden nos descargamos el repositorio completo, puede tardar los suyo :)

Una vez hecho esto, clonamos el repositorio para eliminar morralla de por medio, y eliminamos el origen de rediris:

cd ..
git clone repo_tmp resistencia-cadiz-1812
cd resistencia-cadiz-1812
git remote rm origin

Ahora tenemos nuestro directorio con un repositorio Git, pero sin un origen. En la página principal del proyecto que hemos creado en Gitorious, aparecen dos instrucciones para conectar nuestro repositorio local con el de Gitorious:

git remote add origin git://gitorious.org/resistencia-en-cadiz-1812/resistencia-en-cadiz-1812.git
git push origin master

Y ya está. Tenemos nuestro repositorio Git en Gitorious con las mismas revisiones que teniamos en nuestro viejo SVN. En una próxima entrada, intentaré describir un poquito el workflow básico de Git, por si alguien se anima.

Espero haber sido claro explicándome, y si no, hacédmelo saber :)

  1. diciembre 16, 2009 a las 9:57 pm | #1

    Hola! Qué de tiempo! (XDDD)

    Lo primero, gran entrada y gran noticia :) Lo único malo es que a uno de los dos le va a tocar montar el script de actualización automática del servidor de SVN a partir del de Git. Si me veo inspirada echaré un ojillo a GitPython y pysvn… a ver si me sale algo.

    Lo segundo, de momento no necesito forja (al menos no una formal…), pero me están entrando ganas de trastear Git en serio. Aunque ya me lo conozco y sé de donde sacar la info, reconozco que sería una buena idea hacer un post del workflow en Git, como una pequeña guía de referencia rápida.

    Bueno, pues de momento nada más… A seguir avanzando con el proyecto y con el blog. Enhorabuena! :)

  1. Aún no hay trackbacks

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s

Seguir

Get every new post delivered to your Inbox.