¿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

21 comentarios en «¿Qué es un CVS? Instalación de Subversion»

  1. 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.

  2. 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

  3. 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

  4. Pingback: Subversion 1.4

  5. 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

  6. ¿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?

  7. 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.

  8. Pingback: Un cliente de Subversion gráfico: TortoiseSVN

  9. 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..

  10. 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.

  11. Pingback: Subclipse: plugin de Subversion para Eclipse

  12. 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.

  13. 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

  14. 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).

  15. Pingback: Trunk, branch y tag

  16. Pingback: 100 programas gratis | Bichotoblog

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.