Subversion (experiencias con)
Enlaces útiles
Moviendo un repositorio completo a otro sitio
Desde que empecé a utilizar subversion empecé mal. Tengo dos tipos de proyectos con los que trabajar: software y todo lo demás. En el primer tipo cada programa, aplicación, librería, módulo ... tiene su propio directorio colgando de $HOME/src/ y así lo reflejé directamente en el repositorio.
A raíz de probar una herramienta para revisar los repositorios como viewcvs me dí cuenta de que tenía que dar de alta en la configuración del programa todas y cada una de las carpetas por separado, puesto que son repositorios distintos. No, así no podía seguir si pensaba añadir nuevos proyectos cada dos por tres.
La solución fue la siguiente, teniendo en cuenta que quiero eliminar el directorio trunk de todos ellos:
Crear un repositorio nuevo con el que partir desde cero:
$ cd /var/db/svn $ svnadmin create --fs-type=fsfs sources
Si el proyecto no tiene un directorio trunk:
$ svn mkdir file:///var/db/svn/sources/blosxom $ svnadmin dump blosxom | svnadmin load --parent-dir=blosxom sources
Si el proyecto tiene ese directorio, el proceso es más complicado:
Crear una copia de trabajo del proyecto a renombrar:
$ cd /tmp $ svn co file:///var/db/svn/dhis-dns9-engine coco $ cd coco $ svn move trunk dhis-dns9-engine $ svn commit -m "cambiando nombres"
Con lo que le hemos cambiado el nombre al directorio trunk por el mismo del proyecto.
Volcamos de la misma forma que el anterior, pero si el directorio padre:
$ cd /var/db/svn $ svnadmin dump dhis-dns9-engine | svnadmin load sources
Y obtenemos directamente un directorio dhis-dns9-engine en sources, que es lo que pretendíamos.
Crear una copia de trabajo en la máquina desde la que queremos trabajar (que puede ser la misma, obviamente):
$ cd $HOME $ svn co svn+ssh://victor@taquiones.net/var/db/svn/sources sources
Añadimos todos aquellos proyectos que queramos, como por ejemplo:
$ cd $HOME/sources $ module-starter --module IkiWiki::Plugin::syntax $ svn add IkiWiki-Plugin-syntax $ svn commit -m "new project"