viernes, 9 de marzo de 2007

Subversion + UBUNTU

El primer paso para implementar una solución de integración continua consiste en seleccionar una herramienta de control de versiones para centralizar los fuentes. Existen varias opciones comerciales (PVCS, SourceSafe) y open source (CVS, SVN). Todas tienen sus pros y sus contras pero al final todas cumplen con su objetivo. Yo realmente considero que no hay herramienta mala sino mal utilizada. La experiencia me dice que si uno no se organiza y establece procesos claros la herramienta solo servirá para mantener un backup de nuestro propio desastre.

Para nuestro ejemplo voy a utilizar Subversion (SVN) , en primer lugar porque es gratis (viva el software libre), en segundo lugar porque las características que se describen en su site cumplen con mis requerimientos y en tercer lugar porque es popular. La instalación la voy a hacer sobre Ubuntu.

A continuación describo los pasos para hacer la instalación, crear un primer repositorio y accesarlo. Después veremos como usar Apache web server para accesar por http/https los repositorios y por ultimo como usar MySql para guardar la información de autenticación.

  1. Si no se trabaja como root se debe usar un usuario que pueda ejecutar el comando sudo. Esto se puede hacer colocando el usuario en un grupo que este definido en el archivo /etc/sudoers o agregando el usuario al mismo. Cuando se ejecuta el comando sudo el password que pide es el del usuario.
  2. Se debe verificar que se tiene acceso al repositorio universal de Ubuntu. Esto se hace revisando el archivo /etc/apt/sources.list para ver si las siguientes lineas están comentadas o no

    deb http://us.archive.ubuntu.com/ubuntu/ edgy universe
    deb-src http://us.archive.ubuntu.com/ubuntu/ edgy universe

  3. Instalar svn con el comando

    sudo apt-get install subversion

  4. Para probar la instalación usamos

    svn --version

  5. Para crear nuestro primer repositorio vamos a usar el comando svnadmin. Para ser practicos vamos a usar un mismo directorio padre para todos los repositorios. En este ejemplo voy a usar un directorio padre llamado svn_repos en el home del usuario y allí voy a crear un repo llamado prueba

    cd ~
    mkdir svn_repos
    svnadmin create ~/svn_repos/prueba

    Ahora verificamos que el repo se creo de forma correcta

    ls ~/svn_repos/prueba
    conf dav db format hooks locks README.txt


  6. Una vez creado el repo se puede importar data con el comando svn import. Por ejemplo, podemos cargar todo lo que este en ~/bin con el siguiente comando

    cd ~/bin
    svn import . file:///export/home/svn_repos/prueba
    --message 'Version inicial'



Fijense que si estamos en la misma máquina donde esta svn podemos accesar el repositorio usando urls del tipo file:///ruta/repo, pero en la realidad este escenario es muy raro, generalmente los repos se accesan desde máquinas remotas y para eso debemos configurar algun tipo de servicio que nos permita hacerlo. Actualmente svn se puede accesar de 2 formas, usando svnserve o usando Apache. Mas adelante hablare un poco de como usar svnserve y luego de como integrar svn con Apache web server para accesarlo con http/https.

4 comentarios:

Anónimo dijo...

por favor, cambia el color amarillo del texto en blockquotes. Es ilegible...

Unknown dijo...

Tienes razón, cambie el layout del blog y no considere los post viejos, antes el fondo era oscuro.

Millertaker Blog dijo...

Hola amigo pues me quede varado en la parte de

svn import . file:///export/home/svn_repos/prueba
--message 'Version inicial'

esto es lo que em aparece... la verdad no me es claro lo que resulta despues de este comando

es algo asi...

ACA puedes verlo
Gracias amigo

http://hosting.deimagenes.com/imagenes/0cbb229ed119e37b392b3ffae70dd6f9.jpg

Unknown dijo...

Ese comando es solo un ejemplo de como importar (checkin) un proyecto en un repo de svn. Con ese comando se copia todo lo que esta en esa carpeta bin en el repo prueba definido en la ruta /export/home/svn_repos/. No es necesario ejecutarlo, puedes usar cualquier cliente svn (Tortoise, eclipse, netbeans, etc) para hacer lo mismo.

Para mas referencia puedes ver este enlace
http://svnbook.red-bean.com/en/1.0/re12.html