Ver índice de contenidos del libro

3.6. Versionado del código fuente

Una vez creada la aplicación, se recomienda empezar con el versionado del código fuente (también llamado control de versiones). El versionado almacena todas las modificaciones realizadas en el código, permite acceder a las versiones anteriores de cualquier archivo, simplifica la creación de parches y permite trabajar en equipo de forma eficiente. Symfony soporta de forma nativa el uso de CVS, aunque recomienda el uso de Subversion (http://subversion.tigris.org/). Los ejemplos que se muestran a continuación utilizan comandos de Subversion y presuponen que existe un servidor de Subversion instalado y que se va a crear un nuevo repositorio para el proyecto. Para los usuarios de Windows, se recomienda utilizar TortoiseSVN (http://tortoisesvn.tigris.org/) como cliente de Subversion. La documentación oficial de Subversion es un buen recurso para ampliar los conocimientos sobre el versionado del código y sobre los comandos que utilizan los siguientes ejemplos.

Los siguientes ejemplos requieren que exista una variable de entorno llamada $SVNREP_DIR y cuyo valor es la ruta completa al repositorio. Si no es posible definir la variable de entorno, en los siguientes comandos se debe escribir la ruta completa al repositorio en vez de $SVNREP_DIR.

En primer lugar se crea un nuevo repositorio para el proyecto miproyecto:

> svnadmin create $SVNREP_DIR/miproyecto

Después se crea el layout o estructura básica del repositorio mediante los directorios trunk, tags y branches. El comando necesario es bastante largo:

> svn mkdir -m "Creacion del layout" file: *$SVNREP_DIR/miproyecto/trunk file:*/$SVNREP_DIR/miproyecto/tags file:///$SVNREP_DIR/miproyecto/branches

A continuación se realiza la primera versión, para lo que es necesario importar todos los archivos del proyecto salvo los archivos temporales de cache/ y log/:

> cd ~/miproyecto
> rm -rf cache/*
> rm -rf log/*
> svn import -m "Primera importacion" . file:///$SVNREP_DIR/miproyecto/trunk

El siguiente comando permite comprobar si se han subido correctamente los archivos:

> svn ls file:///$SVNREP_DIR/miproyecto/trunk/

Por el momento todo va bien, ya que ahora el repositorio SVN contiene una versión de referencia de todos los archivos del proyecto. De esta forma, los archivos del directorio miproyecto/ deben hacer referencia a los que almacena el repositorio. Para ello, renombra el directorio miproyecto/ (si todo funciona correctamente lo podrás borrar) y descarga los contenidos del repositorio en un nuevo directorio:

> cd ~
> mv miproyecto miproyecto.original
> svn co file:///$SVNREP_DIR/miproyecto/trunk miproyecto
> ls miproyecto

Y eso es todo. Ahora ya es posible trabajar con los archivos que se encuentran en el directorio miproyecto/ y subir todos los cambios al repositorio. Puedes borrar el directorio miproyecto.original/ porque ya no se utiliza.

Solamente es necesario realizar una última configuración. Si se suben todos los archivos del directorio al repositorio, se van a copiar algunos archivos innecesarios, como los que se encuentran en los directorios cache/ y log/. Subversion permite establecer una lista de archivos que se ignoran al subir los contenidos al repositorio. Además, es preciso establecer de nuevo los permisos correctos a los directorios cache/ y log/:

> cd ~/miproyecto
> chmod 777 cache
> chmod 777 log
> svn propedit svn:ignore log
> svn propedit svn:ignore cache

Al ejecutar los comandos anteriores, Subversion muestra el editor de textos configurado por defecto. Si no se muestra nada, configura el editor de textos que utiliza Subversion por defecto mediante el siguiente comando:

> export SVN_EDITOR=<nombre_del_editor_de_textos>
> svn propedit svn:ignore log
> svn propedit svn:ignore cache

Para incluir todos los archivos de los directorios, se debe escribir lo siguiente cuando se muestre el editor de textos:

*

Para finalizar, guarda los cambios y cierra el editor.