Día a día con Subversion controlando las versiones de nuestros documentos o scripts

Hacker

Este artículo no pretende profundizar en Subversion para grandes proyectos con cientos de desarrolladores colaborando y compartiendo código, sino más bien enseñarte por qué y cómo debes trabajar con Subversion para el control de versiones de tus documentos, ficheros de configuración, programas, proyectos web o android, o scripts... o lo quieras, en definitiva.

Si deseas profundizar y aprender buenas prácticas para la creación de ramas o de merges o de etiquetados de versiones entre cientos de commits, mejor léete el manual oficial.

En este artículo te pretendo enseñar simplemente el día a día con Subversion para tus proyectitos y scripts comunes.

Dicho esto, empecemos con la teoría mínima que necesitamos. En realidad, hay muchas maneras de trabajar y de configurar Subversion. Básicamente puede ser el trabajo en local o en red.
Si deseas en local, sólo te servirá a ti (a no ser que lo tengas en un recurso compartido en red con otras personas) y accederás con file:///recurso.

Y si deseas trabajar en red contra un servidor de tu LAN o de internet, tienes dos opciones. Puedes usar el protocolo http (para ello deberás instalar un Apache y configurar el Subversion para que funcione con éste). Accederemos con http:///.
O también podemos acceder a un servidor Subversion directamente con svnserve que viene con Subversion, usando el puerto por defecto 3690.

La opción de usar Subversion mediante http no es tan potente como usarlo directamente con svnserve, no obstante es la más sencilla para trabajar en red ya que sólo usa el puerto por defecto de cualquier navegador, el 80, y nadie tendrá problemas de hacer checkouts o updates de los repositorios.

Sea cual sea tu situación y tu necesidad, a partir de ahora, los comandos e ideas que vengo a exponer te ayudarán a entender cómo se trabaja con Subversion y cómo se aplican los cambios desde la consola.

Para empezar, crearemos el repositorio llamado "mis_scripts":


joan@lenovo:~$ svnadmin create mis_scripts/

Una vez creado con svnadmin create si listamos el directorio veremos que Subversion ha creado una serie de ficheros:


joan@lenovo:~$ ls mis_scripts/
conf db format hooks locks README.txt

Todo está correcto. Ahora crearemos una estructura inicial (que más tarde eliminaremos). Esta estructura inicial sólo nos va a servir para crear el directorio base de nuestro repositorio:


$ svn import mis_scripts/ file:///home/joan/mis_scripts --message "Creant el primer repositori"
Adding mis_scripts/trunk
Adding mis_scripts/branches
Adding mis_scripts/tags

Committed revision 1.

Como habrás visto, hemos creado los directorios tags, para el etiquetado de versiones, branches para las distintas ramas de nuestros proyectos o desarrollos, y trunk que será nuestro directorio actual de trabajo. Siempre vamos a estar trabajando en las versiones actuales dentro de trunk.

Ahora, ya podemos eliminar ese directorio base, si queremos:


joan@lenovo:~/Escriptori$ rm -rf mis_scripts/

Bien, como ya tenemos configurado Subversion y nuestro repositorio preparado, ya podemos crear nuestra copia de trabajo que será donde trabajaremos en nuestro día a día:


joan@lenovo:~/Escriptori$ mkdir subversion

Entramos y haremos el checkout:


joan@lenovo:~/Escriptori$ cd subversion/
joan@lenovo:~/Escriptori/subversion$ svn checkout file:///home/joan/mis_scripts .
A tags
A trunk
A branches
Checked out revision 1.
joan@lenovo:~/Escriptori/subversion$

Crearemos dos nuevos scripts o programas... y ahora tenemos que subirlos y hacer finalmente el commit para que los cambios sean permantentes:


joan@lenovo:~/Escriptori/subversion/trunk$ ls
enviador.sh inicio-habla.sh

joan@lenovo:~/Escriptori/subversion/trunk$ svn add *
A enviador.sh
A inicio-habla.sh
joan@lenovo:~/Escriptori/subversion/trunk$

De la misma manera, los archivos se podrían eliminar:

De la misma forma que se pueden agregar archivos, se pueden borrar.


joan@lenovo:~/Escriptori/subversion/trunk$ svn delete archivo.src directorio/

Si trabajásemos con más gente, lo que deberíamos hacer regularmente es actualizar nuestra copia de trabajo para que veamos todos los cambios realizados por nosotros y por otras personas que también estén colaborando en el mismo proyecto:


svn update

Para ver los logs de un fichero:


------------------------------------------------------------------------
joan@lenovo:~/Escriptori/subversion/trunk$ svn log inicio-habla.sh
------------------------------------------------------------------------
r2 | joan | 2012-12-04 19:49:39 +0100 (dt, 04 des 2012) | 1 line

Subiendo los dos primeros scripts
------------------------------------------------------------------------
joan@lenovo:~/Escriptori/subversion/trunk$

Y para ver los logs de la copia de trabajo:


joan@lenovo:~/Escriptori/subversion/trunk$ svn log
------------------------------------------------------------------------
r2 | joan | 2012-12-04 19:49:39 +0100 (dt, 04 des 2012) | 1 line

Subiendo los dos primeros scripts
------------------------------------------------------------------------
r1 | joan | 2012-12-04 19:38:14 +0100 (dt, 04 des 2012) | 1 line

Creant el primer repositori
------------------------------------------------------------------------
joan@lenovo:~/Escriptori/subversion/trunk$

A partir de aquí ya sabes más o menos como desenvolverte en un ambiente pequeño con programas, documentos o scripts que tengas que ir actualizando en tu día a día.

Así que, a modo de recordatorio, hemos hecho:

- checkout para cargar una copia de trabajo.
- update para actualizar a la última versión del servidor.
- add o delete para añadir o eliminar nuevos ficheros.
- commit para tener guardados los cambios que vayamos haciendo.
- log para saber la versión global o de cada fichero.

Otros artículos de mi web que quizás te interesen:

- Configurando un entorno de trabajo local con Subversion en Debian Wheezy
- Instal·lant Subversion a un Ubuntu Server 11.04 i configurant un repositori bàsic
- Cosetes del Subversion

Espero que te sirva este artículo, y si detectas algún fallo o algo que puedas mejorar, ¡comenta!

¡saludos!

Doncs bé això és tot, espere que trobes útil aquest article i que et motive a compartir els teus trucs, els teus coneixements i els teus experiments amb el Programari Lliure. Pensa-ho, va, que la Comunitat del Programari Lliure va creixent gràcies a la documentació, el disseny, la formació o la programació, sigues part de la Comunitat :-)

La cultura i la lliure circulació de les idees és l'arma més efectiva contra les dictadures del pensament i contra la ignorància.