Cómo usar Subversion

agosto 4, 2009 at 09:00 2 comentarios

Probado en Ubuntu.

Una versión, revisión o edición de un producto de software, es el estado en el que éste se encuentra en un momento dado en su desarrollo o modificación. Se llama control de versiones a la gestión de los diversos cambios que se realizan sobre los elementos de algún producto o una configuración del mismo. [fuente: wikipedia].

Subversion es un Sistema de Control de Versiones, muy útil en ambientes de desarrollo en equipos en dónde los archivos fuente son modificados por distintas personas en períodos de tiempo variables.

De manera simple, puede decirse que el Subversión se utiliza para proteger el código fuente, que es muy valioso para los programadores y para la empresa.

Subversion es de código abierto y soporta los métodos de bloqueo por candados, y de copia de archivos (algo un poco parecido a los googleDocs).

Subversion

Lo primero es instalar Subversion, para ello desde una consola digitamos:

sudo aptitude install subversion

Ahora vamos a crear un repositorio, que es un directorio en el cuál residirán los archivos de una aplicación particular que estarán sujetos al control de versiones, para ello desde consola digitamos:

svnadmin create /home/usuario/miRepositorio

(debe cambiar la ruta por una que sea válida en su computador)

Lo anterior creará la carpeta si no existe, un detalle es que el Subversion es silencioso, es decir, ningún mensaje significa que tuvo éxito.

RapidSVN

Ya creamos la raíz del repositorio pero no se ha agregado ningún archivo, supondremos que localmente poseemos archivos que queremos subir al servidor, para ello nos valdremos de un cliente gráfico, el RapidSVN, para ello desde consola digitamos:

sudo aptitude install rapidsvn

Iniciamos la aplicación desde el submenú Programación > RapidSVN, se mostrará la siguiente pantalla:
cliente rapidsvn

Creando una aplicación nueva bajo control de Subversion

Ahora vamos a tomar un directorio en nuestro disco duro y lo vamos a copiar (importar) al repositorio, esta es una manera de agregar un proyecto nuevo para ser controlado por el Subversion (otra manera de hacer esto y que requiere acceso físico al servidor dónde se ejecuta Subversion, es ir al directorio que contiene los repositorios y crear a mano las carpetas y archivos iniciales).

A manera de ejemplo supongo que tengo el directorio miDir en la ruta /home/usuario/miDir y que dentro de dicho directorio existe el archivo con nombre miArchivo.

Para importar miDir al repositorio recién creado nos valemos del cliente RapidSVN, para ello damos click en el menú Repository > Import, aparece la pantalla siguiente:

Importar un nuevo proyecto al repositorio

En el campo Repository URL y ya que los estamos probando localmente escribimos la ruta al repositorio usando el protocolo file:/// que denota el uso de archivos locales. De esta manera la ruta sería: file:///home/usuario/miRepositorio/miProyecto donde miProyecto es cualquier nombre que se le quiera poner a la nueva aplicación, y el resto de la dirección es la ruta al repositorio que creamos al inicio.

En el campo Path se encuentra la ruta al directorio miDir mencionado.

Por último, en el campo Enter log message se especifica un mensaje para la bitácora de cambios (No es obligatorio pero debería serlo).

Damos click en Aceptar y saldrá un mensaje como:

Execute: Import
Added: /home/usuario/miDir/miArchivo
Updating...
Ready

Listo ya creamos una aplicación que está bajo control de versiones.

Obteniendo archivos desde el repositorio

Ahora vamos a agregar los archivos que están en el servidor (local) a una nueva carpeta, dicha carpeta se llama miResultado y una vez que los descarguemos, contendrá los archivos que se importaron anteriormente (tal vez parezca un poco tonto si ya existe la carpeta miDir con estos archivos, pero esto tendría más sentido si fuera en un ambiente de red y la aplicación miRepositorio/miProyecto hubiera sido creada por alguien más).

Ahora usando el RapidSVN damos click en el menú Repository > Checkout, se abrirá la siguiente pantalla:

svn checkout

En el campo URL debe ir la ruta a la aplicación (en este caso miProyecto) que reside en el repositorio.

En el campo Destination Directory puede ser cualquier ruta dónde tengamos permisos de escritura, en mi caso en /home/usuario/miResultado

Damos click en Aceptar y se mostrará un mensaje como:

Execute: Checkout
Added: /home/usuario/miResultado/miArchivo
Updated: /home/usuario/miResultado
Updating...
Ready

Si no existe la carpeta miResultado, esta se creará junto con los directorios y archivos que contenga, ya podemos ver desde el RapidSVN los archivos recién descargados.

Para añadir archivos o directorios basta con añadirlos dentro de la carpeta miResultado y luego ir al RapidSVN y dar click derecho sobre el archivo > add y luego click derecho de nuevo > commit.

Para borrar un archivo es similar, desde el RapidSVN click derecho sobre el archivo > delete, click derecho sobre el archivo > commit

svnserve

Ahora vamos a ejecutar un servidor para que los archivos no sólo sean legibles de manera local a través del protocolo file:///, sino que vamos a usar el svnserve que es un servidor que trae el Subversion, el svnserve es adecuado para equipos de trabajo pequeños y en ambientes de LAN, más tarde usaremos Apache.

Para ejecutar svnserve desde consola digitamos:

svnserve -d

El comando anterior, ejecuta el subversion como un demonio (que es la manera más sencilla de ejecutarlo), también puede ejecutarse con inetd, sobre un túnel ssh y como un servicio de Windows (para mayor información ver el manual).

Configurar svnserve

Ahora vamos a probar el svnserve, para ello vamos a autorizar la lectura de archivos por parte de cualquier persona (acceso anónimo), para ello vamos al archivo de configuración del svnserve, el svnserve.conf que de manera predeterminada se encuentra en la ruta: /var/www/rep/conf/svnserve.conf

Desde consola digitamos:

sudo vim /var/www/rep/conf/svnserve.conf

Habilitamos el acceso anónimo como sólo lectura, para ello descomentamos la siguiente línea:

anon-access = read

Ahora vamos a descargar los datos del repositorio a través del protocolo svn://

Igual que antes vamos a menú Repository > Checkout pero esta vez en el campo URL, cambiamos el protocolo de file:/// a svn:// para indicar que vamos a acceder a través del svnserve, y en el campo Destination Directory digitamos la ruta /home/usuario/miResultado_svnserve, damos aceptar y listo.

Si ahora añadimos un archivo a la carpeta miResultado_svnserve y le damos commit desde el RapidSVN no nos va a dejar ya que no tenemos permiso, para ello modificamos de nuevo el svnserve.conf, descomentamos las siguientes líneas que indican el derecho de escritura para usuario autenticados y el archivo en que se encuentra la lista de usuarios y contraseñas para el svnserve:

auth-access = write

password-db = passwd

Ahora editamos el archivo passwd que se encuentra en /var/www/rep/conf (justo al lado del svnserve.conf) y creamos el usuario guest con contraseña guest (de ejemplo ya vienen dos: Harry y Sally):


Apache

El svnserve es adecuado para equipos de desarrollo pequeños y que accesan desde una LAN o un VPN, si se necesita acceso desde Internet y/o se quiere más seguridad y flexibilidad, es mejor usar Apache para acceder a los repositorios del Subversion.

Apache utiliza el protocolo web-dav que es una extensión del http y permite usar el puerto 80 para acceder.

Primero instalamos apache, desde consola digitamos:

sudo aptitude install apache2

Seguidamente vamos a configurarlo, es necesario tener instalado el módulo mod_dav del apache (que por lo general viene incluido en el apache), podemos verificar que lo tenemos, usamos el siguiente comando:

locate mod_dav.so

También necesitamos el backend del módulo anterior, el mod_dav_svn,para ello instalamos el paquete libapache2-svn:

sudo aptitude install libapache2-svn

Pensando en que la estructura del repositorio que se usará es una carpeta padre dónde residen carpetas hijas, dónde cada una de ellas contendrá (ó representa) el repositorio de una aplicación, creamos dicha carpeta padre, en mi caso en /var/svn

sudo mkdir /var/svn

Ahora vamos a configurar el apache, para ello editamos el archivo de configuración httpd.conf:

sudo vim /etc/apache2/httpd.conf

Agregamos lo siguiente:

<Location /svn>
DAV svn
SVNParentPath /var/svn
</Location>

Con lo anterior estamos diciéndolo al Apache que las peticiones a una dirección como http://ip_servidor/svn/miRepositorio1 ó http://ip_servidor/svn/miRepositorio2 son repositorios bajo el control de versiones.

Ahora vamos a agregar autenticación, existen varias maneras de hacerlo, vamos a usar el modo básico que consiste en un archivo con nombre de usuarios y contraseña, primero modificamos lo agregado anteriormente al httpd.conf para indicar que vamos a usar autenticación básica, indicar la dirección del archivo de usuarios y contraseñas, en este caso es la ruta /etc/svn-auth-file, y solicitar un usuario válido, de manera que quedaría así:

<Location /svn>
DAV svn
SVNParentPath /var/svn
AuthType Basic
AuthName "Repositorios de Subversion"
AuthUserFile /etc/svn-auth-file
Require valid-user
</Location>

Ahora vamos a crear el archivo de usuarios y contraseñas conteniendo un usuario inicial, en este caso harry para ello en consola digitamos:

htpasswd -cm /etc/svn-auth-file harry

A continuación se nos solicitará la contraseña de harry (dos veces por la verificación).

Para agregar un nuevo usuario digitamos: (ojo que es sin la opción -c usuada anteriormente)

htpasswd -m /etc/svn-auth-file nuevo_usuario

Ahora reiniciamos el apache y listo listo, ya podemos acceder el server usando direcciones como http://ip_servidor/svn/miRepositorio, claro siempre hay que usar el comando svnadmin create para crear repositorios dentro de la carpeta /var/svn

Un detalle es que la carpeta debe tener permisos de escritura sino no podremos escribir archivos en el repositorio.

setas
Enjoy!

Entry filed under: internet, linux, servidores, sistemas operativos, subversion. Tags: , , , , , .

Redirigir peticiones de Apache a Tomcat Respaldo Autómatico Remoto de Bases de Datos (mysql) con secure copy (scp) y Cron

2 comentarios Add your own

  • 1. Noyaro  |  agosto 20, 2009 en 15:57

    esta interesante el articulo thk btr.

    Cuidate carnal

    Responder
  • 2. Fran  |  junio 2, 2013 en 12:33

    Muchas gracias y enhorabuena está muy claro y de una manera muy sencilla explicado.

    Responder

Dejáte un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Trackback this post  |  Subscribe to the comments via RSS Feed


Acerca de Mi:


Hell-Out world!!

Digo yo

Es difícil hacerse la vida fácil.

Dice Victor Frankl

Lo que importa no es tanto que la vida de una persona esté llena de dolor o de placer, sino que esté llena de sentido.

Digo yo

Que dura está la vida.

Dice Jhon Lennon

La vida es lo que pasa mientras haces planes.

Digo yo

Dónde haya un computín esté dónde esté algo comenzará en cero.

Dice Einstein

Dios no juega a los dados.

Dice Niels Bohr

Einstein no le diga a Dios lo que tiene que hacer.

Dice el Che:

Seamos realistas y hagamos lo imposible.

Dice Goethe:

Lo que no comprendemos no lo poseemos.

Digo yo:

Hay que tratar de travesear todo.

Dice Oscar Wilde:

Cualquier hombre puede llegar a ser feliz con una mujer, con tal de que no la ame.

Digo yo:

De fijo dijo eso porque era homosexual.

Artículos

agosto 2009
L M X J V S D
« Jul   Sep »
 12
3456789
10111213141516
17181920212223
24252627282930
31  

A %d blogueros les gusta esto: