jueves, 23 de junio de 2011

Creando un repositorio SVN (Linux)




En esta entrada voy a explicar paso a paso, como crear un repositorio subversion. En mi caso particular, instalo el repositorio en la máquina que hace de servidor en mi casa (en la cual muchas veces codifico), la cual tiene Ubuntu 11.04, y a la cual me voy a conectar para hacer commits/updates desde al menos otras 2 máquinas frecuentemente.

Requisitos

Asumo que se tiene un servidor Apache instalado, puesto que utilizaremos este servidor web para conectarnos via http a nuestros repositorios.

Paso a paso

1) Instalar subversion y el módulo svn para apache.

En mi caso, subversion ya venía instalado por defecto cuando instalé Ubuntu, sin embargo, de no estarlo, es lo primero que debemos hacer:

sudo aptitude install subversion

Luego, instalar el módulo svn para apache:

sudo aptitude install libapache2-svn

2) Grupos y permisología

Esto no es estrictamente necesario, pero 100% recomendable por cuestiones de seguridad. Crearemos un grupo, al cual agregaremos nuestro usuario y el usuario de Apache (www-data):

sudo addgroup svn
sudo usermod -a -G svn marco
sudo usermod -a -G svn www-data

Lo siguiente que debemos crear es el archivo de acceso al repositorio. Así crearemos todos los usuarios que accederán al repositorio:
sudo htpasswd -c /etc/apache2/dav_svn.passwd marco
sudo htpasswd /etc/apache2/dav_svn.passwd otro_usuario

Obsérvese que a partir del segundo usuario, no se pasa el parámetro -c, puesto que ya dav_svn.passwd se encuentra creado. Por cada usuario nos pedirá una contraseña, la cual no tiene por qué coincidir con la contraseña del correspondiente usuario en el sistema (en caso de existir).

3) Modificamos el archivo de configuración

Como root, debemos editar el archivo /etc/apache2/mods-enabled/dav_svn.conf para especificar nuestros datos de configuración. El archivo se explica solo, sin embargo dejo las líneas que me interesan:

<Location /svn>

DAV svn

SVNParentPath /var/lib/svn

AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd

<LimitExcept GET PROPFIND OPTIONS REPORT>

Require valid-user
</LimitExcept>

</Location>


Ahí especifico la ruta por la cual quiero acceder a los repositorios (en este caso http://servidor/svn), la ruta física donde se almacenarán todos los repositorios (/var/lib/svn), digo que quiero utilizar autenticación básica y especifico la ruta de dav_svn.passwd.

4) Reiniciar el servidor Apache.

sudo /etc/init.d/apache2 stop
sudo /etc/init.d/apache2 start


5) Creamos el directorio padre para nuestros repositorios
sudo mkdir /var/lib/svn

6) Agregar proyectos

sudo svnadmin create /var/lib/svn/myproject
sudo svn mkdir -m "crear la estructura" file:///var/lib/svn/myproject/trunk file:///var/lib/svn/myproject/tags file:///var/lib/svn/myproject/branches

sudo chown -R www-data:svn /var/lib/svn/myproject/
sudo chmod -R g+rws /var/lib/svn/myproject/

7) Comenzar a trabajar

Entramos al directorio donde tengamos los archivos actuales de nuestro proyecto (puede ser en la misma máquina u otra) y hacemos un checkout:

svn co http://server.name/svn/myproject/trunk .

o en el caso de que estemos en la misma máquina, podemos utilizar:

svn co http://localhost/svn/myproject/trunk .

Agregamos lo que tengamos que agregar (por ejemplo con un svn add *) y hacemos el import inicial:

sudo svn import -m "iniciando" . file:///var/lib/svn/myproject/trunk


Para hacer el import inicial, utilicé "file:///", esto fue porque estaba trabajando en el servidor directamente. Si en cambio hubiese estado en otra de las máquinas de la red, debí utilizar http y la dirección IP del servidor.

Y eso es todo. Así como creamos el proyecto "myproject" podemos crear todos los que queramos. El resto es simplemente trabajar y utilizar los comandos svn que utilizamos habitualmente.


Más información

doc.ubuntu-es: Subversion

No hay comentarios: