Subversion es un sistema de control de versiones concurrente. Su objetivo es muy similar al de CVS aunque tiene grandes ventajas sobre éste, y por eso, cada día muchos proyectos de desarrollo de software cambian a subversion.

En esta receta se explica cómo realizar las operaciones básicas con un repositorio subversion. Si necesitas crear y publicar un repositorio consulta esta otra receta

Crear un módulo

Cuando se comieza un nuevo desarrollo es necesario crear un nuevo módulo en el repositorio (algo similar a un directorio en el sistema de ficheros local). Para ello, supondremos que ya existe un repositorio accesible en <a href="http://example.com/repos">http://example.com/repos@. Tienes que ejecutar algo similar a:

$ svn import /home/user/job http://example.com/repos/myjob

Siendo job el directorio que contiene los ficheros del nuevo proyecto. Esto creará el módulo myjob en el repositorio repos del host example.com y subirá allí el contenido de /home/user/job, creando así la versión inicial.

Descargar un módulo

Esta es la operación más habitual y también una de las más simples:

$ svn checkout http://example.com/repo/anotherjob

Esto obtiene una copia de la versión HEAD del módulo anotherjob. Crea un directorio con el mismo nombre en el directorio actual.

Actualizar una copia local

Suponiendo que haya nuevas versiones disponibles del módulo del ejemplo anterior, puedes actualizar tu copia a la última versión con:

anotherjob$ *svn update*

Gestión de conflictos

ToDo

Añadir un fichero

Si has creado un fichero nuevo al módulo y quieres que esté en el repositorio tienes que añadirlo explícitamente. Recuerda que un repositorio está pensado para “fuentes” (no binarios). No subas nada que se pueda generar a partir de otros ficheros. Nada de binarios, ficheros objeto, copias de seguridad, pdf o cualquier cosa que se pueda obtener como resultado de una compilación.

anotherjob$ *svn add* nuevo_fichero
anotherjob$ svn commit

Subir cambios locales al repositorio

Si eres tú el que desea subir al repositorio una nueva versión de los ficheros de ese módulo (que has modificado tú mismo), ejecuta esto:

anotherjob$ *svn commit*

Es este caso se abrirá el editor de texto por defecto para que añadas un comentario referente a las modificaciones que estás subiendo.

Mover un módulo

Esta es una importante mejora con respecto a CVS. En subversion se pueden renombrar y mover ficheros y módulos completos. La idea es poder cambiar la ubicación del módulo en el mismo repositorio.

Supón que quieres mover el contenido del módulo xmi2code en <a href="http://example.com/repos/">http://example.com/repos/</a> a @xmi2code/trunk. Las operaciones a realizar serán las siguientes

  • Renombrar (mover) xmi2code a trunk
$ svn move -m "xmi2code a trunk" http://example.com/repos/xmi2code http://example.com/repos/trunk
  • Crear el subdirectorio xmi2code:
$ svn mkdir -m "crear xmi2code" http://example.com/repos/xmi2code
  • Mover trunk a xmi2code:
$ svn move -m "trunk a xmi2code" http://example.com/repos/trunk http://example.com/repos/xmi2code

Crear una rama

Subversion permite crear flujos de desarrollo paralelos ramificando el módulo en uno o varios puntos. Para este ejemplo, supondremos que la rama principal se encuentra en el subdirectorio trunk del módulo xmi2code. La nueva rama tendrá por nombre vhdl. Tendrás que ejecutar las siguientes operaciones:

  • Creación del subdirectorio branches (en el caso de que no exista), en el que se colocará la nueva rama.
$ svn mkdir http://example.com/repos/xmi2code/xmi2code/branches
  • Creación de la rama:
 $ svn copy http://example.com/repos/xmi2code/xmi2code/trunk http://example.com/repos/xmi2code/xmi2code/branches/vhdl

Referencias



blog comments powered by Disqus