Inicio / Wikis / Tutoriales / Control de versiones con Subversion - Control de versiones con Subversion

Control de versiones con Subversion - Control de versiones con Subversion

Tutorial creado por Guillem Borrell. Extraido de: http://torroja.dmt.upm.es/%7Eguillem/subversion/
05 de Noviembre de 2006
Herramientas de gestión de contenidos

2 - Control de versiones con Subversion

Subversion es uno de los sistemas de control de versiones más modernos y utiliza un sistema con repositorio centralizado y fue diseñado como remplazo del sistema más utilizado hasta la fecha, CVS[1]. Subversion es un proyecto de software libre maravillosamente documentado gracias al libro Version Control with Subversion . Esta introducción puede considerarse un resumen de los contenidos de este libro.

El control de versiones se basa en una serie de acciones más o menos estándar de comunicación entre la copia de trabajo y el repositorio. Estas acciones son precisamente las que permite el cliente Subversion. No se entrarán en detalles de cómo administrar un repositorio y cómo se resuelven conflictos entre el repositorio y la copia de trabajo. Es una introducción a todas las prácticas beneficiosas del control de versiones; Subversion no es más que un ejemplo práctico.

2.1. Instalar Subversion

Instalar subversion es sencillo tanto en UNIX como en Windows. Es un programa común en GNU/Linux, no ocupa más de unos pocos megabytes y todas las distribuciones lo incluyen. En Debian bastará con escribir

    
       $ aptitude install subversion
     
   

Método que se extrapola a todas las distribuciones con gestión automática de paquetes. Esta operación sirve para instalar tanto el cliente como el servidor. En Windows servidor y cliente suelen instalarse a parte. La mejor manera de instalar un servidor subversion es optar por la distribución SVN-1ClickSetup. El cliente más recomendable es Tortoise svn. Este cliente convierte el mismo explorer en un cliente Subversion, es realmente rápido y cómodo de usar.

Figura 1. Explorer modificado por Tortoise SVN

2.2. Crear un repositorio subversion

Crear un repositorio en UNIX es tan sencillo como lo siguiente:

    
       guillem@pc:~$ svnadmin create repositories/test
       guillem@pc:~$ cd repositories
       guillem@pc:~/repositories$ ls
     
     
       test
     
     
       guillem@pc:~/repositories$ cd test
       guillem@pc:~/repositories/test$ ls
     
     
       conf  dav  db  format  hooks  locks  README.txt
     
   

Importante

Puede surgir la pregunta de por qué subversion ha creado estos directorios en vez de los ya descritos trunk, branches y tags. Esta duda proviene de no haber entendido la diferencia entre el repositorio y la copia de trabajo. Acabamos de crear un repositorio que no contiene ningun archivo sino una base de datos de todos los cambios realizados durante el tiempo. Los desarrolladores de Subversion saben que este error es muy común, por ello han puesto en este directorio el archivo README.txt

      
         This is a Subversion repository; use the 'svnadmin' tool to examine
         it.  Do not add, delete, or modify files here unless you know how
         to avoid corrupting the repository.
         
         If the directory "db" contains a Berkeley DB environment, you
         may need to tweak the values in "db/DB_CONFIG" to match the
         requirements of your site.
         
         Visit http://subversion.tigris.org/ for more information.
       
     

Lo siguente es subir al repositorio los archivos sin versión del ordenador local. Recuérdese que aún no existe ninguna copia de trabajo. Para ello se usa el comando import

    
       guillem@pc:~$ svn import misarchivos \
                 file:///home/guillem/repositorios/test/misarchivos \
                 -m "Initial import of misarchivos"
     
     
       Adding         misarchivos/cversiones.xml
       Adding         misarchivos/figuras
       Adding         misarchivos/figuras/tortoise.png
       
       Committed revision 1.
     
   

Ahora el repositorio ya contiene una cantidad mínima de archivos suficiente para crear la copia de trabajo.

Aviso

Es muy importante que el repositorio se encuentre en un ordenador con conexión permanente a internet. Aunque no se necesite ninguna conexión para trabajar con la copia de trabajo la mayoría de las acciones de Subversion requieren algún tipo de comunicación con el repositorio

2.3. Crear una copia de trabajo

Despues de crear el repositorio y llenarlo con documentos el siguiente paso es crear la copia de trabajo. En el control de versiónes generar una copia de trabajo a partir de una rama o la totalidad del árbol del repositorio recibe el nombre de check out.

    
       guillem@pc:~$ mkdir workspace
       guillem@pc:~$ cd workspace
     
   

Una vez creado el directorio que almacenará las copias de trabajo hay que escoger el método de comunicación con el repositorio. Los cuatro disponibles son:

file

Acceso al repositorio que se encuentra en el mismo ordenador. Aunque a continuación se listan los distintos métodos para acceder a un repositorio es importante que se entienda la sintaxis del comando checkout, para ello nada mejor que utilizar la ayuda mediante el comando svn help. Para consultar un comando en concreto, por ejemplo el anterior, basta con teclear svn help checkout

          
             guillem@pc:~/workspace$ svn checkout \
             file:///home/guillem/repositorios/test/misarchivos misarchivos
             guillem@pc:~/workspace$ ls
           
           
             misarchivos
           
         
http

Acceso mediante http. Ideal cuando el repositorio es público. Requiere que el servidor http Apache pueda servir páginas a internet y que sea capaz de comunicarse con subversion. La primera condición suele ser la más restrictiva. Muchos de los servidores subversion de proyectos de software libre utilizan este método para hacer públicos sus repositorios con permiso de lectura.

          
             guillem@pc:~/workspace$ svn checkout \
             http://svn.guillem.com/misarchivos misarchivos
           
         
https

Acceso mediante http con encriptación SSL

svn

Acceso mediante el propio servidor de archivos de Subversion llamado svnserve.

svn+ssh

Acceso mediante ssh. Es la mejor opción en el caso de repositorios privados de uso personal. El check out se haría con:

          
             guillem@pc:~/workspace$ svn checkout \
             svn+ssh:///home/guillem/repositorios/test/misarchivos misarchivos
           
         

2.4. Sesiones de control de versiones.

Ya se dispone de un repositorio y de una copia de trabajo. Sólo falta conocer las prácticas más comunes del control de versiones, es decir, cómo utilizar una copia de trabajo Subversion. El método será plantear sesiones ejemplo, con un principio y un final claros.

2.4.1. Una sesión simple

La sesión de control de versiones más simple posible consta de tres pasos, actualizar la copia de trabajo, modificar y crear archivos y subir los cambios al repositorio.

2.4.1.1. Actualizar la copia de trabajo

Es siempre el primer paso antes de realizar cualquier cambio a un documento. El hecho de omitir la sincronización con el repositorio genera la mayoría de los errores de funcionamiento de la copia de trabajo. Para ello sirve el comando

            
               guillem@pc:~/workspace/misarchivos$ svn update
             
           

Esto sincroniza recursivamente todos los archivos y directorios a partir de la rama misdocumentos. La acción de este comando depende del directorio donde se ejecute ya que actúa sobre los subdirectorios posteriores y no sobre los previos en el árbol. Por ejemplo, si se desea sincronizar sólo el subdirectorio figuras y no hacer lo propio con el resto del contenido de misdocumentos se ejecutará dentro del directorio correspondiente:

            
               guillem@pc:~/workspace/misarchivos/figuras$ svn update
             
           

2.4.1.2. Acciones con archivos

El trabajo normal con un ordenador se basa en modificar, crear y eliminar documentos, el hecho que estén bajo el control de versiones no modifica ni debe modificar estas acciones básicas.

svn add

Añade un documento que ya se encuentra en algún directorio de trabajo al sistema de control de versiones.

Aviso

No todos los documentos que se encuentran en los directorios de la copia de trabajo están dentro del sistema de control de versiones, deben añadirse explícitamente. Es así como debe ser para evitar que el repositorio se hinche debido a los archivos temporales.

svn ls

Lista los archivos en el directorio actual que están dentro del sistema de control de versiones. Es el método más común para saber qué documentos se encuentran o no en el repositorio.

svn rm

Borra un documento del directorio actual tanto de la copia de trabajo como del repositorio.

2.4.1.3. Subir los cambios al repositorio

Siempre que se cumple algún objetivo es muy recomendable subir los cambios al repositorio. Para ello

          svn commit
         

Acto seguido se abrirá un editor para que, si es necesario, se anoten los comentarios correspondientes en los logs del control de versiones.

2.4.2. Otros comandos

Obviamente los comandos de trabajo con los archivos no se limitan a add, ls, y rm, Subversion cuenta con muchísimos mas. Para tener una idea de la potencia de subversion basta con consultar la ayuda

        
           guillem@pc:~/workspace$ svn help
         
         
           usage: svn "subcommand" [options] [args]
           Subversion command-line client, version 1.2.0.
           Type 'svn help "subcommand"' for help on a specific subcommand.
           
           Most subcommands take file and/or directory arguments, recursing
           on the directories.  If no arguments are supplied to such a
           command, it recurses on the current directory (inclusive) by default.
           
           Available subcommands:
           add
           blame (praise, annotate, ann)
           cat
           checkout (co)
           cleanup
           commit (ci)
           copy (cp)
           delete (del, remove, rm)
           diff (di)
           export
           help (?, h)
           import
           info
           list (ls)
           lock
           log
           merge
           mkdir
           move (mv, rename, ren)
           propdel (pdel, pd)
           propedit (pedit, pe)
           propget (pget, pg)
           proplist (plist, pl)
           propset (pset, ps)
           resolved
           revert
           status (stat, st)
           switch (sw)
           unlock
           update (up)
           
           Subversion is a tool for version control.  For additional information,
           see http://subversion.tigris.org/
         
       

Notas

[1]

CVS=Concurrent Versions System

Valora este capítulo:
Autor y licencia de 'Control de versiones con Subversion - Control de versiones con Subversion'
Guillem Borrell Extraído de: http://torroja.dmt.upm.es/%7Eguillem/subversion/

Creative Commons License
Esta obra está bajo una licencia de Creative Commons.
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.

Opiniona sobre 'Control de versiones con Subversion - Control de versiones con Subversion' (0)

Tu nombre debe tener tres caracteres como mínimo.
Es necesario que te des de alta con una cuenta de correo válida.
Es necesario que te des de alta con una cuenta de correo válida.
El contenido del título de tu opinión debe tener tres caracteres como mínimo.
Es obligatorio que selecciones una valoración del recurso.
El contenido del comentario de tu opinión debe tener tres caracteres como mínimo.

Opina sobre este tutorial



* Valoración:
* Nombre:
* Correo electrónico:
* Título:
* Comentario:

Wikis relacionados con 'Control de versiones con Subversion - Control de versiones con Subversion'

Documento con fundamentos teóricos de control de accesos en redes telemáticas; se tratan temas como... Más »
Sobre Carmen Martín Gaite se ha escrito bastante aunque tal vez no tanto como se... Más »
Este ensayo radica principalmente en el deseo de trazar las primeras líneas directrices de una... Más »
En las épocas actuales en donde priman los aspectos económicos de la globalización, de la... Más »
En entidades sin ánimo de lucro, las decisiones tomadas por los directivos se encaminan a... Más »
¿Estás seguro de que deseas eliminar este capítulo?