sábado, 17 de noviembre de 2012

Migrar CVS a GIT en sourceforge

Migrar CVS a GIT en sourceforge

Desde hace muchos años, tengo un proyecto en sourceforge usando CVS,  https://sourceforge.net/projects/t-gtk/ , es una librería que permite al lenguaje Harbour, tener un GUI Multiplataforma haciendo uso de las librerías GTK+

En proceso para convertir un proyecto de CVS a GIT, es el siguiente;

mkdir directorio && cd directorio
rsync -av rsync://PROJECTNAME.cvs.sourceforge.net/cvsroot/PROJECTNAME/* .

En nuestro caso seria;

mkdir migracion && cd migracion
rsync -av rsync://t-gtk.cvs.sourceforge.net/cvsroot/t-gtk/* .

Esto nos bajo , no el código fuente en si, si no, el repositorio en 'crudo'.

Después, coger este fichero, cvs2git.options.
Sustituye t-gtk por tu proyecto.
Busca ctx.username = 'cvs2svn', pon tu usuario.

Ahora, dentro del directorio migración, ejecuta;


cvs2svn-trunk/cvs2git --options=cvs2git.options --fallback-encoding utf-8
Esto creo un par de directorios en la ruta migracion.

Ahora, creamos un directorio, prueba, y dentro ejecutamos
git clone ssh://thefull@t-gtk.git.sourceforge.net/gitroot/t-gtk/t-gtk

cd prueba
cat ../../cvs2svn-tmp/git-{blob,dump}.dat | git fast-import
git reset --hard



Bien, en este punto. ya tenemos nuestro CVS pasado a GIT. Podemos mirar la historia, git log, y ver como coincide , para asegurarnos que todo esta OK.

Ahora, vamos a configurar git para decirle quienes somos, solo para este proyecto;
git config user.name "xthefull"

git config user.mail "rafa_@gmail.com"

Ahora solo queda subirlo a sourceforge en nuevo repositorio convertido a git:
git push origin master

Podéis ver ahora el resultado final;


Esto es una simplificación de la ayuda obtenida en, que he llevado a cabo y a sido un exito :
http://blog.gorwits.me.uk/2011/06/22/migrate-sourceforge-cvs-repository-to-git/

Nota:

No sabía que sourceforge tuviera soporte de git en la web, he actualizado el proyecto, he add soporte para git, y solo tenemos que tocar el fichero ./git/config, para que en vez de apuntar a,

#url = ssh://thefull@t-gtk.git.sourceforge.net/gitroot/t-gtk/t-gtk

apunte a:
url = ssh://thefull@git.code.sf.net/p/t-gtk/git


Hacer de nuevo un git push origin master y este es el resultado final;
http://sourceforge.net/p/t-gtk/git/commit_browser




Android y Git. Disponer del hash automáticamente.

Una de las cosas a las que estoy acostumbrado, es tener siempre en mi código, el hash/tag/versión del control de versiones que estoy usan...