Subversion

8 01 2011

Definición

Subversión es un software de sistema de control de versiones diseñado específicamente para reemplazar al popular CVS, el cual posee varias deficiencias. Es software libre bajo una licencia de tipo Apache/BSD y se lo conoce también como svn por ser ese el nombre de la herramienta de línea de comandos. Una característica importante de Subversion es que, a diferencia de CVS, los archivos versionados no tienen cada uno un número de revisión independiente. En cambio, todo el repositorio tiene un único número de versión que identifica un estado común de todos los archivos del repositorio en cierto punto del tiempo.

Ventajas

  • Persigue la historia de los archivos y directorios a través de copias y renombrados.
  • Las modificaciones son atómicas.
  • La creación de ramas y etiquetas es una operación más eficiente; Tiene costo de complejidad constante (O(1)) y no lineal (O(n)) como en CVS.
  • Se envían sólo las diferencias en ambas direcciones (en CVS siempre se envían al servidor archivos completos).
  • Puede ser servido, mediante Apache, sobre WebDAV/DeltaV. Esto permite que clientes WebDAV utilicen Subversion en forma transparente.
  • Maneja eficientemente archivos binarios.
  • Permite selectivamente el bloqueo de archivos.
  • Cuando se usa integrado a Apache permite utilizar todas las opciones que este servidor provee a la hora de autentificar archivos (SQL, LDAP, PAM, etc).

Desventajas

  • El manejo de cambio de nombres de archivos no es completo. Lo maneja como la suma de una operación de copia y una de borrado.
  • No resuelve el problema de aplicar repetidamente parches entre ramas, no facilita el llevar la cuenta de qué cambios se han trasladado. Esto se resuelve siendo cuidadoso con los mensajes de commit. Esta carencia será corregida en la próxima versión (1.5).

Funcionamiento

  • Subversión se compone de un programa “servidor” y otro “cliente”.
  • El servidor contiene una copia maestra de la información a compartir.
  • Los usuarios usan el cliente para descargar la información existente en el servidor.
  • Cuando un usuario realiza un cambio, lo envía al servidor para que otros usuarios puedan descargarlo.
  • El servidor guarda los ficheros dentro de una base de datos (no son visibles en el sistema de ficheros).

¿Qué requiere?

  • Hay versiones para Windows y cualquier sistema basado en Unix.
  • Puede instalarse como servidor independiente o como módulo de Apache.
  • Consume pocos recursos.
  • Una instalación básica solo requiere conocimientos a nivel de usuario del sistema operativo.

Cómo instalar subversion en windows

  1. Se debe Descargar subversion 1.4.4 y descomprimirlo
  2. Copiar los archivos mod_authz_svn.so y mod_dav_svn.so , que se encuentra en svn-win32-1.4.4/bin, en APACHE_INSTALL_DIR/modules
  3. Copiar los archivos intl3_svn.dll y libdb44.dll, que se encuentra en svn-win32-1.4.4/bin, en APACHE_INSTALL_DIR/bin
  4. Añadir las siguientes líneas (en la sección donde está la carga de librerías) al archivo APACHE_INSTALL_DIR/conf/httpd.conf para cargar las correspondientes librerias:
    1. LoadModule dav_svn_module modules/mod_dav_svn.so
    2. LoadModule authz_svn_module modules/mod_authz_svn.so
    3. LoadModule dav_module modules/mod_dav.so (es probable que exista, simplemente hay que asegurarse de que no esté comentada)
    4. LoadModule dav_fs_module modules/mod_dav_fs.so (es probable que exista, simplemente hay que asegurarse de que no esté comentada)
  5. Añadir la siguiente línea (al final) al archivo APACHE_INSTALL_DIR/conf/httpd.conf para cargar la configuración de subversion:
    1. Include “APACHE_INSTALL_DIR/conf/extra/httpd-subversion.conf”
  6. Creamos el archivo APACHE_INSTALL_DIR/conf/extra/httpd-subversion.conf con la siguiente configuración (es sólo un ejemplo):
    1. <Location /repos>
      DAV svn
      SVNParentPath “C:/tools/wamp/tmp/svn”
      AuthzSVNAccessFile “C:/tools/wamp/Apache2/conf/access-policy/svn-groups.conf”
      AuthType Basic
      AuthName “Subversion repository”
      Require valid-user
      AuthUserFile “C:/tools/wamp/Apache2/conf/access-policy/svn-users.conf”
      </Location>
    2. Cuidado con las rutas! eso es sólo un ejemplo. Básicamente se indica donde van a estar nuestros repositorios de subversion, el archivo con los grupos y usuario de subversion
  7. Ahora tenemos que crear los archivos svn-groups.conf y svn-users.conf. Para el primero de ellos tenemos:
    1. [groups]
      test-group: recena

[test:/]
@test-group:rw

Definición de grupos y a continuación, nombre del repositorio (que tendremos que crearlo) y permisos del grupo sobre el raiz del repositorio.

  1. Para crear un usuario, hacemos uso de la utilidad htpasswd que nos proporciona Apache.
  2. Para crear el repositorio hacemos uso de la utilidad svnadmin que proporciona subversion.

Creando un Repositorio

Un repositorio es un área en su sistema donde el sistema de control de versiones va a guardar su programa. Su programa se guarda en una serie de archivos que guardan toda la historia de su programa. Usted puede accesar toda la historia de las versiones de su programa.

Para crear un repositorio en subversion, usted puede utilizar el comando svnadmin create:

$ svnadmin create /datos/repositorios/direcciones

Esto creará un repositorio llamado direcciones en el directorio datos/repositorio (que primero debe existir). De preferencia (pero no obligatoriamente) usted debe hacer esto en un servidor, para que se pueda conectar a el repositorio desde otras máquinas.

Principales Comandos

  • Import: Permite subir al repositorio la estructura inicial de nuestro proyecto.
  • Checkout: Descargar en un PC un proyecto desde un repositorio.
  • Add: Añade un fichero a nuestro proyecto.
  • Delete: Permite marcar un fichero o directorio para ser eliminado del repositorio.
  • Commit: Permite que el repositorio todos los cambios hechos sobre un proyecto en local.
  • Update: Permite actualizar nuestro proyecto en local desde el repositorio central.

Bibliografia:

http://www.imapax.com/soluciones/joomla/que-es-subversion-svn.html

 


Actions

Information

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s




%d bloggers like this: