Subversion es un sistema de control de revisiones (RCS), que permite a muchos desarrolladores trabajar simultáneamente sobre un árbol de fuentes común salvando los inconvenientes que trae el estar editando todos los mismos archivos a la vez.

El servidor de Subversion (de acá en adelante SVN) mantiene una copia de referencia de todo el árbol de fuentes en una base de datos interna, que en la jerga se llama "repositorio".

En la máquina donde se hace el desarrollo se instala el cliente de SVN, que permite hacer las transferencias desde y hacia el repositorio

El ciclo de desarrollo comienza haciendo una copia local del código en el repositorio. A este proceso se lo conoce como "Checkout", y se hace con el comando:

svn co <server> <paquete>
El nombre del paquete es normalmente el nombre del proyecto. En nuestro caso, ese nombre es "koha". El server de SVN está instalado en http://www.koha.unlp.edu.ar/publico/ (el método de acceso que usa el cliente es DAV)

O sea que para hacer el checkout de koha, el comando es:

svn co http://www.koha.unlp.edu.ar/publico/ koha
El proceso de checkout va a dejar en el directorio actual un directorio "koha" donde va a haber una copia exacta del árbol de fuentes de Koha. Además, adentro de cada directorio va a haber un directorio llamado .svn. Es importante no tocar nada de lo que hay ahí adentro, porque son archivos que usa el svn para determinar qué fue lo que se modificó en el momento de hacer el commit.

El repositorio también se puede explorar con un navegador normal de web entrando a http://www.koha.unlp.edu.ar/publico/.

Una vez que se tiene la copia local del koha, se editan los archivos normalmente como se haría si uno estuviera trabajando solo. Lo ideal sería que cada uno de los desarrolladores tuviera un server web (o un server virtual) donde probar lo que va haciendo y no volcar los cambios en el repositorio cada vez que se toca un archivo, sino sólo cuando todo anda (se arregló el bug o se agregó la funcionalidad). Para guardar los cambios en el repositorio, se hace un "commit" del árbol de fuentes. Esto es, estando en el directorio koha (o cualquiera de los subdirectorios), se hace:

svn ci
El commit sólo se hace desde el directorio actual hacia adentro. No se hace commit de los cambios que están en los directorios jerárquicamente superiores al actual.

Cuando se hace el commit, el svn abre automáticamente un editor de texto para que el desarrollador escriba un comentario breve del código que va a enviar al repositorio. Este comentario debería tener al menos una indicación de qué se agregó o qué se cambió del código original.


Opcionalmente, se puede usar el argumento -m para agregar el comentario al commit en lugar de usar el editor de texto:

svn ci -m "Arreglado bug 1092"
Una vez que el commit termina (sólo se mandan los cambios que se hicieron, no todo el árbol de fuentes completo), lo ideal es hacer un "update" para asegurarse de que la copia local está sincronizada con el repositorio (esto baja cualquier modificación que se le haya hecho al árbol del repositorio aparte de las que se hicieron localmente):

svn update
Con esto la copia local queda sincronizada con el repositorio y se puede seguir trabajando.

Con cada commit, el número de "revisión" del repositorio se aumenta en 1. Esto es simplemente para control del SVN y no tiene nada que ver con la "versión" del software que se está desarrollando..

Llegado el caso, se puede hacer un "rollback" del repositorio a el estado en que estaba en una determinada revisión, o un determinado día.

Esos son los comandos básicos para manejar la interacción con el SVN.