Professional Documents
Culture Documents
– ¿Qué es Subversión?
Subversión es un sistema de control de versiones diseñado específicamente para reemplazar al
popular CVS. Es software libre bajo una licencia de tipo Apache/BSD y se le conoce también como
svn por ser el nombre de la herramienta utilizada en la línea de órdenes.
Una característica importante de Subversión 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 un
instante determinado.
– ¿Cómo funciona?
Con subversión, se puede acceder al repositorio a través de redes, lo que le permite ser usado por
personas que se encuentran en distintos ordenadores. A cierto nivel, la posibilidad de que varias
personas puedan modificar y administrar el mismo conjunto de datos desde sus respectivas
ubicaciones fomenta la colaboración. Se puede progresar más rápidamente sin un único conducto
por el cual deban pasar todas las modificaciones. Y puesto que el trabajo se encuentra bajo el
control de versiones, no hay razón para temer por que la calidad del mismo vaya a verse afectada si
se ha hecho un cambio incorrecto a los datos, simplemente deshaga ese cambio.
– Ventajas
– Se sigue la historia de los archivos y directorios a través de copias y renombrados.
– Las modificaciones (incluyendo cambios a varios archivos) 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 de forma transparente.
– Maneja eficientemente archivos binarios (a diferencia de CVS que los trata
internamente como si fueran de texto).
– Permite selectivamente el bloqueo de archivos. Se usa en archivos binarios que, al no
poder fusionarse fácilmente, conviene que no sean editados por más de una persona a
la vez.
– 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
Vamos a instalar un servidor de Subversion que gestione las peticiones a través de Apache, lo cual
lo dotará de una serie de funcionalidades añadidas. Estas funcionalidades las proporcionarán los
distintos módulos de Apache existentes, como el poder usar autentificación por base de datos.
Realmente útil a la hora de mantener el control de acceso a distintos usuarios por proyecto.
Así:
</Location>
Como somos muy ordenados, queremos crear un repositorio por cada proyecto. Así será más
sencillo gestionar las políticas de seguridad. Todos estos repositorios se van a crear dentro del
directorio /var/lib/svn por lo que tenemos que crearlo previamente.
Aunque no es estrictamente necesario, vamos a crear los directorio trunk, tags y branches que
servirán para almacenar el código actual, los tag y las posibles ramas que pueda tener nuestro
proyecto:
Dado que vamos a acceder a este repositorio a través de apache, tendremos que asignarle el
propietario adecuado:
Sólo nos queda reiniciar el servidor Apache para que vuelva a leer la configuración actualizada:
A continuacion suministre la clave asignada al usuario Para crear el segundo utilice el mismo
comando pero sin la opcion -c
sudo htpasswd /etc/subversion/passwd <usuario>
Autenticación selectiva
Ahora editaremos el fichero de autorización, pudiendo definir grupos (en la sección [groups]) y
luego definiendo rutas del repositorio con un listado de los permisos de los usuarios y/o grupos a
dichas secciones:
# vim /home/svn/conf/authz
[groups]
admins = root
[/]
@admins = rw
En este fichero, se supone que tenemos que haber creado en el paso anterior un usuario root, de
modo que dicho usuario root es añadido a un grupo llamado admins, luego se define la sección [/],
es decir la raíz del repositorio, a la cual damos accesos de lectura y escritorio sólo a dicho grupo y a
nadie más.
El fichero antes de que lo edites tiene mucha documentación al respecto de cómo configurarlo, es
muy recomendable que lo leas con calma para evaluar las diferentes opciones que te puede dar su
correcto uso.
Dado que todas las operaciones las hemos hecho por comodidad como usuario root antes de
terminar tendremos que asignar los permisos de la carpeta /home/svn al usuario que realmente tiene
que usarlos, que en este caso es Apache2 y por ende www-data:
/etc/init.d/apache2 restart
– Principales comandos
– Import: Comando utilizado para subir al repositorio la estructura inicial de nuestro proyecto.
Bibliografía: