Un comienzo rápido

Algunas personas tienen problemas para absorber una nueva tecnología leyendo un enfoque del tipo "arriba a abajo" como el que ofrece este libro. Esta sección es una introducción muy breve a Subversion, y está pensada para dar a los principiantes algo con lo que defenderse. Si usted es de los que prefiere aprender experimentando, la siguiente demostración le pondrá en marcha. A lo largo del camino, le iremos dando enlaces a los capítulos relevantes de este libro.

Si a usted le resulta completamente nuevo el concepto de control de versiones o el modelo copiar-modificar-mezclar usado tanto por CVS como por Subversion, debería leer Capítulo 2, Conceptos básicos antes de seguir adelante.

[Nota] Nota

El siguiente ejemplo asume que usted tiene preparados tanto el cliente de línea de comandos de Subversion svn, como la herramienta administrativa svnadmin. También asume que su cliente svn ha sido compilado con soporte para la base de datos Berkeley DB. Puede comprobarlo ejecutando svn --version y asegurándose de que el modulo ra_local está disponible. Sin este módulo, el cliente no podrá acceder a URLs del tipo file://

Subversion almacena todos los datos versionados en un repositorio central. Para comenzar, cree un nuevo repositorio:

$ svnadmin create /path/to/repos 
$ ls /path/to/repos
conf/  dav/  db/  format  hooks/  locks/  README.txt

Este comando crea un nuevo directorio /path/to/repos que contiene un repositorio de Subversion. Asegúrese de que este directorio reside en un disco local y no compartido en red. Este nuevo directorio contiene principalmente una colección de ficheros de la base de datos Berkeley DB. Para más información sobre la creación y mantenimiento de repositorios, vea Capítulo 5, Administración del Repositorio.

A continuación, cree un árbol de ficheros y directorios para importar dentro del repositorio. Por razones que se aclararán más tarde (vea Capítulo 4, Crear ramas y fusionarlas), su estructura debería tener tres directorios en el primer nivel de la jerarquía llamados branches,tags, y trunk:

/tmp/project/branches/
/tmp/project/tags/
/tmp/project/trunk/
               foo.c
               bar.c
               Makefile
               …

Una vez tenga un árbol de datos listo para continuar, impórtelo dentro del repositorio con el comando svn import (vea svn import):

$ svn import /tmp/project file:///path/to/repos -m "initial import"
Adding         /tmp/project/branches
Adding         /tmp/project/tags
Adding         /tmp/project/trunk
Adding         /tmp/project/trunk/foo.c
Adding         /tmp/project/trunk/bar.c
Adding         /tmp/project/trunk/Makefile
…
Committed revision 1.
$ 

Ahora el repositorio contiene este árbol de datos. Observe que el directorio original /tmp/project no se ha modificado; Subversion no se preocupa por él (de hecho, puede incluso borrar ese directorio si lo desea). Para comenzar a manipular los datos del repositorio, necesitará crear una nueva copia de trabajo de los datos, una especie de entorno de trabajo privado. Pida a Subversion que obtenga [5] una copia de trabajo del directorio trunk del repositorio:

$ svn checkout file:///path/to/repos/trunk project
A  project/foo.c
A  project/bar.c
A  project/Makefile
…
Checked out revision 1.

Ahora usted dispone de una copia personal de parte del repositorio en un nuevo directorio llamado project. Puede editar los ficheros en su copia de trabajo y después depositar esos cambios de nuevo en el repositorio.

Para un recorrido completo por todas las operaciones que puede realizar con su copia de trabajo, vea Capítulo 3, Recorrido guiado.

Llegado este punto, usted tiene la opción de hacer que su repositorio Subversion esté disponible a otros a través de una red. Vea Capítulo 6, Configuración del servidor para aprender acerca de los diferentes tipos de procesos servidor disponibles y cómo configurarlos.



[5] N.T.: En la bibliografía sobre control de versiones se suele utilizar el vocablo inglés «check out» para referirse a la operación usada para obtener una copia (parcial) de un repositorio centralizado. En ocasiones, la obtención de dicha copia implica la conexión a un servidor remoto, por lo que en la traducción es común emplear indistintamente los términos «obtener» y «descargar» para referirse a esta operación.