¿Qué es un CVS? Instalación de Subversion

CVS es el sistema de control de versiones concurrentes mas utilizado en el mundo del software libre, sin embargo es bastante arcaico (nació en 1985) y tiene bastantes carencias, como son la falta de versionado de directorios, de renombrado o de copias; su uso poco eficiente de la red o el que no almacene archivos binarios completos, solo los cambios entre versiones.

Subversion es un CVS de código abierto, bajo una licencia del tipo Apache/BSD, que nació como alternativa a CVS y que intenta solucionar estos problemas y carencias. Tenemos multitud de alternativas a CVS aparte de Subversion, por ejemplo GNU Arch del que he oido muchas alabanzas y ninguna crítica, pero en esta entrada nos centraremos en Subversion por ser el más popular.

Lo primero es lo primero. ¿A qué se refiere el control de versiones? Estamos hablando de controlar los cambios que realizan los programadores sobre el código fuente (o cualquier otro tipo de usuario sobre un documento cualquier que tenga varias versiones) de forma que no se produzcan inconsistencias por trabajar mas de una persona con el mismo documento y se pueda volver hacia atrás en las versiones de forma cómoda o se pueda comprobar los cambios o los errores corregidos en cada versión.

Vamos a ver ahora su instalación en sistemas Windows. Lo primero que tenemos que hacer es descargar Subversion desde su página web, donde podemos encontrar una versión comprimida o una versión que incorpora un instalador para facilitar mas aún las cosas.

Una vez instalado deberíamos poder ejecutar Subversion de forma local escribiendo svn en la consola. Esto bastaría si no fuéramos a utilizar Subversion en red. En el caso de que si vayamos a hacerlo necesitamos instalar además un servidor web como Apache.

Para comenzar a trabajar con Subversion tenemos que crear un repositorio primero. Un repositorio es donde se va a guardar todas las versiones de nuestro proyecto. Supongamos que queremos crear el repositorio en C:/Documentos/Proyectos, primero nos moveríamos a ese directorio en la línea de comandos y luego usaríamos la herramienta svnadmin para crear el repositorio:

svnadmin create repositorio

Esto crearía un directorio C:/Documentos/Proyectos/Repositorio para actuar como mi repositorio.

Para activar la posibilidad de usar Subversion en red vía Apache necesitamos copiar el módulo mod_dav_svn.so de la carpeta httpd en el directorio donde se instaló subversión a la carpeta de módulos (modules) de Apache tras lo cual editamos nuestro httpd.conf para informar a Apache de la existencia del nuevo módulo. Buscamos la línea

#LoadModule dav_module modules/mod_dav.so

la descomentamos (quitamos el #) y añadimos también

LoadModule dav_svn_module modules/mod_dav_svn.so

Copiamos también las dll de la carpeta bin de Apache y de Subversion al directorio modules para que puedan ser accedidas por los módulos y añadimos al final del httpd.conf lo siguiente

<Location /repos>
DAV svn
SVNPath c:/documentos/proyectos/repositorio
AuthType Basic
AuthName “Repositorio Subversion”
AuthUserFile c:/programas/Apache2/usuarios.txt
# Cualquiera puede leer, para otras operaciones
# hay que estar autentificado.
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>

con esto creamos un repositorio ficticio repos y le indicamos la ruta a él (notad que las barras no son invertidas en las rutas, además si hay espacios en las rutas tenemos que incluir la ruta entre comillas). Además pedimos que los usuarios se autentifiquen para poder realizar cualquier operación que no sea la lectura, comparando el nombre de usuario y contraseña introducidas con la información sobre los usuarios del fichero c:/programas/Apache2/usuarios.txt (nota: dado que no estamos utilizando una conexión segura se podrían capturar las contraseñas usando un sniffer).

El archivo usuarios.txt no existe por defecto, es simplemente un archivo que crearemos nosotros utilizando la herramienta de Apache htpasswd que se encuentra en el directorio bin de la carpeta de Apache y que nos sirve para crear una clave de tipo MD5.

htpasswd -mc c:/programas/Apache2/usuarios.txt Zootropo
htpasswd -m c:/programas/Apache2/usuarios.txt Otro

Le indicamos donde queremos guardar el fichero de contraseñas (en el caso de que la ruta tenga espacios la escribimos entre comillas) y qué nombre de usuario queremos, tras lo cual nos pedirá la contraseña a utilizar para ese usuario. Fijaos en que para el primer usuario que creemos (Zootropo) hay que añadir también el flag c para que cree el fichero.

Si reiniciamos el servidor ahora deberíamos poder acceder al repositorio vía web. Abrimos el navegador de internet y en la barra de localización escribimos http://127.0.0.1/repos/. Si nos sale un mensaje de página no encontrada algo ha fallado.

Ahora que el servidor CVS ya está listo necesitamos un cliente CVS para trabajar con él. Subversion incluye herramientas de línea de comandos para este fin, pero es mas cómodo utilizar una interfaz gráfica como la de TortoiseSVN

Comentarios
  1. Juan Carvajal

    Gracias por tan excelente informe. Estoy en el trabajo de instalar una herramienta que me permita realizar el control de versiones, veo en Subversión una buena alternativa. Tengo la siguiente inquietud: Puedo definir y darle labels o nombres a las versiones que va generando Subversión.
    Muchas gracias.

    Responder

  2. Eulalio Vazquez Tovar

    Tambien tengo la misma pregunta que el Sr. Juan Carvajal la de
    Puedo definir y darle labels o nombres a las versiones que va generando Subversión.
    les agradecería mucho que me contestaran gracias

    Responder

  3. mira que me sale un error :ouch:
    en la linea http.conf del Apache
    AuthName “Repositorio Subversion”

    no tengo ni idea que puedo cambiar

    Responder

  4. also

    Tener cuidado porque solo se puede montar con el apache 2.0 y solo las versiones superiores a las 2.0.54 que las otras no va, que yo me he calentado mucho la cabeza hasta que me dí cuenta

    Responder

  5. […] Ya está disponible la versión 1.4 de Subversion, el sistema de control de versiones del que ya hablamos anteriormente (Os recomiendo TortoiseSVN como cliente gráfico). […]

    Responder

  6. Claudio

    hola a todos, mi pregunta como puedo solucionar el problema del mod_dav_svn.so me arroja este error

    The Apache service named reported the following error:
    >>> Cannot load C:/Program Files/Apache/modules/mod_dav_svn.so into server:no se encuentra el proceso especificado

    le he agregado todos los .dll que de la carpeta bin de subversion a la carpeta modules de apache pero todavia no me funciona

    agradeceria su ayuda
    saludos

    Responder

  7. leynier

    ¿quisiera saber claramente si Trac se puede clasificar como un cliente de subversion, como tal, si pudiera ser tratado a la par de otros clientes, como por ej. tortoise?

    Responder

  8. Trac es mucho más que un cliente de Subversion. Se puede usar para un wiki con información sobre el proyecto y una BBDD de bugs como bugzilla.

    Responder

  9. Douglas

    Buenas Tardes. amigos trabajo en la empresa telefonica mas grande de venezuela Verizon, actualmente instale subversion y puedo ver la pagina perfectamente cuando me autentifico, pero tambien instale el tortoise y no me deja autentificarme quisiera que me dieran sus comentarios al respecto.

    Responder

  10. […] Geek Software, linux, tecnología, gadgets e internet « ¿Qué es un CVS? Instalación de Subversion De chorizos, ladrones y mangantes. […]

    Responder

  11. Jenshin Blanco

    Hola.. no conozco nada sobre subversion solo lo que se puede leer en internet pero me gustaria saber con detalle, como hago para implementar subversion.

    Gracias..

    Responder

  12. Teresa

    Hola, tengo el mismo problema que Claudio, apache da error al intentar cargar mod_dav_svn.so

    httpd.exe:syntax error on line 176 of C:/AppServ/Apache2.2/conf/httpd.conf: Can not load C:/AppServ/Apache2.2/modules/mod_dav_svn.so into server: No se puede encontrar el m\xf3dulo especificado.

    La línea 176 es:LoadModule dav_svn_module modules/mod_dav_svn.so
    En la carpeta modules de apache copié todos los archivos que indicais, ¿alguien me puede ayudar?
    Gracias de antemano.

    Responder

  13. […] Subclipse sea el plugin para integrar Subversion con Eclipse más utilizado del mercado, por encima del plugin “oficial”, Subversive, aunque son muy […]

    Responder

  14. cesar

    A mi me da un error similar al de Teresa.

    El problema no estara con la versión de apache instalada? con que versión de apache fue realizado este informe?

    Intentare encontrar una versión más antigua de apache para ver que sucede.

    Responder

  15. Gracias por postear este tutorial me ayudo muchisimo.
    Carlos

    Responder

  16. Peter

    http://www.hasheado.com/usando-subversion-desde-la-linea-de-comandos.html excelente post para usar SVN desde la linea de comandos.

    Responder

  17. fernando

    estoy estudiando este curso, por favor le pediría me podrian informar si este programa es funcional y como les ha ayudado con su aplicacion

    Responder

  18. jesus muñoz

    Muy bueno este material, es claro y preciso, me ayudó a entender el sistema de control de versiones Subversion y su configuración en unas pocas líneas. Sólo tengo una observación, y es que no aparece la fecha de publicación del artículo, ni tampoco de los comentarios. (Comentado el 28-12-2010 10:24 a.m. Venezuela).

    Responder

  19. […] conceptos principales a manejar a la hora de utilizar un sistema de control de versiones, como CVS, Subversion, Git o Mercurial. A continuación tenéis una pequeña definición de estos tres […]

    Responder

  20. […] Subversion: uno de los sistemas de control de versiones más utilizados. En Mundo geek ya explicamos como hacer uso de él en ¿Qué es un CVS? Instalación de Subversion […]

    Responder

Deja un comentario