Introducción para Instalar Subversion y Autenticación por Apache
Uno de los clientes me ha solicitado la instalación de subversion y la autentificación se realice a través de Apache. Aparte de ello podemos ver un listado de nuestros ficheros a través de nuestro propio navegador.
A la vez añadiremos algunos clientes usados y comandos básicos desde Linux para poder hacer pruebas.
Lo que instalaremos será siempre desde los propios repositorios oficiales y en este caso vamos a trabajar en una distribución Debian 8.1.
Instalando los paquetes necesarios Subversion y Apache SVN
Lo primero que haremos será instalar subversion + tools y el modulo de apache para svn.
apt-get install subversion subversion-tools libapache2-svn apache2
Al instalar los módulos por defecto se habilitan en caso de no hacerlo tenemos que habilitar el dav y dav_svn:
a2enmod dav dav_svn
Si queremos ver una lista de los posibles módulos que podemos habilitar solo tenemos que ejecutar el comando «a2enmod».
Configurando nuestro entorno
Este será nuestro entorno y ficheros con los que vamos a trabajar:
- Directorio donde guardaremos los repositorios SVN: /var/www/svn
- Configuración de mod_dav: /etc/apache2/mods-enabled/dav_svn.conf
- Fichero de usuarios: /etc/svn-usuarios
Lo primero que haremos será crear nuestro directorio:
mkdir -p /var/www/svn
Lo siguiente será configurar nuestro entorno en Apache, para ello editamos: /etc/apache2/mods-enabled/dav_svn.conf
<Location /svn> DAV svn SVNParentPath /var/www/svn AuthType Basic AuthName "Repositorios SVN" AuthUserFile /etc/svn-usuarios Require valid-user </Location>
Como podemos ver en la configuración hemos descomentado unas cuantas líneas del fichero y además añadidas otras nuevas. Pero los puntos importantes es donde estará nuestro repositorio «/var/www/svn», el fichero que usaremos para autentificar «/etc/svn-usuarios» y el forzar a que solo usuarios válidos vean los repositorios «Require valid-user».
Configurando los usuarios
Para ello utilizaremos el comando htpasswd el cual nos permitirá guardar los usuarios en un fichero. Por defecto el tipo de cifrado que usa es MD5 pero podemos usar otro tipo de cifrado o guardarlo en plano si lo desea el administrador (no recomendado).
htpasswd -c /etc/svn-usuarios usuario1
Con este comando crearemos por primera vez el fichero y además nos creará el usuario «usuario1». Nos solicitará la password y la confirmación de la password.
Para agregar nuevos usuarios, no tenemos que que usar la opción -c tan solo el comando sin más:
htpasswd /etc/svn-usuarios usuario2
Con esto tendremos 2 usuarios creados y las contraseñas cifradas en MD5.
Creando los repositorios
Usaremos un comando de svn para crear nuestros directorios. En este caso trabajaremos con 2 repositorios de ejemplo:
svnadmin create /var/www/svn/repo1
svnadmin create /var/www/svn/repo2
Daremos permisos a ambos directorios con el usuario de apache «www-data» en el caso de distribuciones Debian o el que usemos en nuestro Apache.
chown -R www-data:www-data /var/www/svn
Probando desde el navegador
La prueba que haremos será básica es acceder desde nuestro navegador a la ruta de nuestro SVN.
http://IP/svn/repo1 o http://IP/svn/repo2
Evidentemente si tenemos configurado un dominio pues podemos acceder a través del dominio.
Si todo ha ido correcto nos mostraría los ficheros de nuestro repositorio (en nuestro caso no hemos metido nada) después de habernos solicitad usuario y contraseña.
Comando básicos SVN
A continuación vamos a poner unos cuantos comandos básicos para trabajar con svn desde entornos Linux.
- Importando ficheros desde un directorio: svn import -m «Mi primera vez» /tmp/t1project/ file:///var/www/svn/repo1/
- Información acerca de tu proyecto: svn info http://localhost/svn/repo1 –username usuario1
- Recuperando información del servidor: svn co http://localhost/svn/repo1 /tmp/myfirstproject –username usuario2
- Añadiendo modificaciones: svn add fich3 –username usuario2 && svn commit -m “Modificado fichero 3” –username usuario2
- Revisando el historial: svn log http://localhost/svn/repo1 –username usuario1
- Ver el listado de ficheros actuales: svnlook tree /var/www/svn/repo1/
Algunas aclaraciones sobre los comandos usados:
- Todos los comandos han sido ejecutados desde la propia máquina, por lo tanto usamos notaciones locales.
- Estos comandos se pueden hacer para contenido remoto, evidentemente nos pedirá usuario y contraseña.
Clientes Windows SVN
La verdad que el único cliente Windows que había probado era Tortoise, pero he indagado un poco en la red y he encontrado una entrada en Wikipedia enumerando las distintas diferencias entre cada cliente.
Ver clientes Windows SVN en Wikipedia.
Conclusión
Como podéis observar la implementación es relativamente sencilla, es más si aún queremos rizar el rizo podemos forzar que se haga todo a través de navegación segura (https).
Aparte de ello esto generalmente lo suelen usar programadores para tener un control de versiones de su código.
En este tutorial tienes una referencia de c mo instalar Apache si es que no lo tienes instalado.
Buenas,
En este tutorial se da por sentado que se tiene instalado apache directamente.
Pero lo mejor es instalar desde los paquetes oficiales con yum , apt/aptitude.
Un saludo