..:: JoNiuX ::..

Instalando un servidor SubVersion

escrito por el 31-marzo-2008, en Internet, Linux, Programación

Desde que estudiaba, muchas veces me pasó que trabajando en tareas o desarrollos para la universidad, al intentar hacer una mejora, ésta no funcionaba como se suponía y tenía que recuperar un respaldo de una versión anterior, respaldo que como siempre no había hecho, entonces comenzaba a borrar el código a ver si lograba recuperar el estado anterior.SubVersion

En ese momento no tenía idea que existían sistemas para controlar versiones.

Imaginense si un solo desarrollador tiene problemas para controlar las versiones del software que desarrolla, desarrollar en forma colaborativa sin un control eficiente de cada cambios es un completo caos.

Comencé a buscar información de como se desarrollaba Linux y fué asi como llegué a CVS, instalé un servidor que me sirvió para llevar algunos proyectos, pero luego me enteré que SVN (SubVersion) era el remplazo de CVS y obviamente comencé a ver de que se trataba leyendo manuales y artículos.

¿Qué es SubVersion?

SubVersion es un sistema de control de versiones libre y de código fuente abierto, se encarga de manejar archivos y directorios, conservando sus versiones, y cambios. Esto permite recuperar versiones anteriores de cada archivo o simplemente examinar el historial de cambios, y una de sus mejores características: es multiusuario y funciona perfectamente en un ambiente geográficamente distribuido como es internet.

¿Dónde lo consigo?

SubVersion se puede instalar de varias maneras, desde compilar directamente el código fuente hasta instalar paquetes rpm. En este caso instalaremos una versión que funcionará en un servidor Linux y a la cual se accede utilizando un cliente SVN como TortoiseSVN utilizando el paquete rpm.

Idealmente SubVersion se debe instalar utilizando las herramientas de la version de Linux que se disponga, ya sea yum o apt. En mi caso me gusta trabajar con CentOS asi que para obtenerlo simplemente hice

yum install subversion

Creando el primer repositorio

Para la creación del primer repositorio, es necesario crear un usuario que llamaré svn para que controle todos los repositorios, y esto se hace con el comando

useradd -d /home/svnroot -c subversion svn

Donde /home/svnroot es el directorio de esta instalación y donde quedarán los repositorios.

Para crear el primer repositorio que llamaremos «proyecto_1″ se utiliza el comando

svnadmin create /home/svnroot/proyecto_1

Esta instrucción genera todos los directorios necesarios para controlar el repositorio, pero no configura el servicio de red para que accedan nuestros «colaboradores» al repositorio por medio de la red.

Configuración de svnserve

El demonio que controla el servicio SubVersion de llama svnserve y para configurarlo se debe agregar estas líneas al archivo /etc/services

svnserve 3690/tcp # Subversion svnserve
svnserve 3690/udp # Subversion svnserve

Además se debe agregar como servicio dentro del sistema xinet.d.

Para esto se crea el siguiente archivo /etc/xinetd.d/svnserve

# default: on
# Subversion server
service svn
{
socket_type = stream
protocol = tcp
user = svn
wait = no
disable = no
server = /usr/bin/svnserve
server_args = -i -r /home/svnroot
port = 3690
}

Para iniciar el servicio hay que reiniciar xinetd

/etc/init.d/xinetd restart
Con esto, deberíamos tener el servidor operando. Hay que colocar atención con las reglas del firewall donde debemos habrir el puerto 3690 para tcp y udp.

Creación de usuarios

En subversión cada repositorio tiene sus propios usuarios, pero también se puede configurar para que un usuario de un servidor vea todos los repositorios que existen en él.

En este caso configuré a cada repositorio con sus correspondientes usuarios.

Los usuarios de un repositorio se deben configurar en el archivo svnserve.conf dentro del directorio conf. Cada repositorio tiene su propio directorio conf.

Para este servidor el repositorio de prueba quedo en /home/svnroot/proyecto_1 y el archivo de configuración en /home/svnroot/proyecto_1/conf/svnserve.conf

Este archivo contiene

[general]
anon-access = none
auth-access = write
password-db = passwd
realm = Mi primer proyecto svn

En él se ha configurado un acceso denegado para los usuarios anónimos y los usuarios autenticados tienen permiso de escritura, también se define la base de datos en el archivo passwd y el nombre del repositorio

El archivo passwd contiene

[users]
joniux = clavejoniux
malleus = clavemalleus

En este archivo se definen los usuarios y sus claves en texto plano.

Con esto, ya deberíamos poder conectarnos utilizando un cliente SubVersion como TortoiseSVN.

¿cómo usarlo?. Eso da para otro post!!!.

:,

2 Comments for this entry

  • backdoor

    UNa consulta, creaste el primer repositorio en el home, he visto otros manuales y hablan d integracion con apache, cual es la mejor opcion o cuando usar la opcion con apache?. Y como hacer para crear un proyecto con la estructura de trunk, branchs y tags
    Saludos,

  • juan

    Hola,

    Muy bueno el tutorial.

    ¿podrías explicar como conectarse con un cliente de svn localmente por favor?

    No consigo conectarme, y he seguido al 100% las instrucciones, aparentemente todo ha quedado perfecto en el server.

    Gracias.-

1 Trackback or Pingback for this entry

Deja un comentario

¿Buscando algo?

Use este formulario para buscar en el sitio:

¿No encontraste lo que buscabas? Déjame un comentario y veré como puedo ayudarte!

Visita a mis amigos

Algunos amigos que tienen sus blogs...