Subversion es un sistema de control de versiones que nos sirve para tener un control sobre nuestro proyecto y permitirnos realizar cambios dentro del mismo manteniendo un historial de cambios. Esto facilita entre otras cosas el trabajo cooperativo sobre un mismo proyecto.
Para trabajar con SVN podemos crear nuestro propio repositorio o bien importar un repositorio existente.
Crear un repositorio
Lo primero para trabajar con subversion es crear un repositorio. En este es donde se va a almacenar el contenido. Para ello creamos la carpeta en la ruta que queramos y a continuación ejecutamos el siguiente comando:
svnadmin create /ruta_al_repositorio
Un ejemplo sería el siguiente si lo que queremos es almacenar nuestros proyectos en una carpeta dentro de /home/ llamada repoSvn:
svnadmin create /home/repoSvn/
Importar archivos a nuestro repositorio
Supongamos que tenemos unos archivos en otra ruta en los que estamos trabajando y los queremos importar a este repositorio. Nos situamos en la carpeta en la que tenemos nuestros ficheros y lanzamos el siguiente comando:
svn import /ruta_a_la_carpeta_a_importar/ file:///ruta_a_la_carpeta_repositorio/ -m “mensaje del commit”
En el ejemplo que estamos siguiendo vamos a importar una carpeta llamada locales
svn import /home/locales/ file:///home/repoSvn/locales -m "Importacion inicial"
Este directorio que acabamos de importar aún no es una copia controlada de Subversion. Antes de que hacer un checkout del proyecto lanzando el siguiente comando:
svn checkout file:///ruta_al_repositorio
En nuestro caso sería:
svn checkout file:///home/repoSvn/locales
Esto lo que hará será crear un subdirectorio llamado “locales” en nuestro ejemplo en el directorio actual y clonar los ficheros del repo en él.
Trabajar con los ficheros
Con los pasos anteriores ya hemos creado un repositorio y también un directorio de trabajo por lo que ya podemos trabajar con nuestro proyecto.
Crear un nuevo fichero y añadirlo al repositorio
Para empezar vamos a crear un nuevo archivo en nuestro directorio de trabajo y posteriormente lo añadiremos a nuestro repositorio. A modo de ejemplo vamos a crear un fichero llamado primero.txt. Para subir este fichero el comando que tenemos que usar es svn add
. Por ejemplo sería:
svn add primero.txt
Con esto todavía no tendríamos añadido este fichero al repositorio si no que solo lo hemos añadido a la lista para que se suba en el siguiente commit. Podríamos añadir más ficheros si queremos antes de hacer commit. Antes de continuar podemos usar el comando status
para ver lo que tenemos actualmente. Con nuestro ejemplo veríamos que tenemos tres archivos sin subir.
svn status
Una vez finalicemos ya podemos proceder con el commit. El comando sería:
svn commit -m “comentario del commit”
Actualizar un fichero de nuestro repositorio
Es normal que posteriormente a haber añadido un fichero al repositorio queramos seguir trabajando con él. Una vez finalicemos tendremos que actualizar la copia del repositorio. Para actualizar un fichero el comando sería:
svn update nombre_del_fichero
svn commit
Borrar ficheros
Puede darse el caso de que quieras borrar un fichero en local pero este no se borrará automáticamente en el repositorio. De hecho, si hacemos un checkout del repositorio veremos que tenemos nuevamente una copia del fichero que borramos.
Para evitar esto lo que tenemos que hacer es lanzar el comando correspondiente que sería:
svn delete nombre_del_archivo
Es importante tener en cuenta que esto no borrará el fichero del historial del repositorio pero cuando hagamos nuevamente checkout no restauraremos de nuevo este fichero.
Estructura de proyectos en SVN
Los proyectos suelen contener tres directorios por cada proyecto que tengamos. Los directorios serían:
-Trunk: Carpeta donde se almacena el código fuente que estamos desarrollando. Estarán todos los directorios y ficheros de nuestro proyecto. En esta carpeta estará la última versión disponible para todo el mundo.
-Tag: Se almacenan en esta carpeta las diferentes versiones de nuestro proyecto.
-Branches: Directorio donde se almacenan las ramas que tengamos creadas para desarrollo. Las ramas se pueden crear para por ejemplo implementar una nueva funcionalidad al proyecto o bien para arreglar un problema detectado.
Resumen de comandos utilizados
import
: Con este comando subimos al repositorio la estructura inicial de nuestro proyecto.checkout
: Comando para descargar un proyecto desde un repositorio a nuestro espacio de trabajo.status
: Nos sirve para ver la situación en la que se encuentra nuestra copia local frente al repositorio.add
: Utilizado para añadir ficheros a la cola para ser subidos al repositorio en el próximo commit.uptate
: Comando que nos permite actualizar los cambios que hemos realizado en local a la copia del repositorio.commit
: Subir los cambios de los ficheros del proyecto local al repositorio.Delete
: Con este comando indicamos que ese fichero va a ser eliminado de nuestro repositorio.