Вы находитесь на странице: 1из 9

laupri .

com
Informtica Fotografa Cocina Miscelnea

Portada del sitio > Alter > Informtica > Sobre Linux > Debian
Lenny >

subversion, instalacin,
configuracin y uso en debian
Domingo 15 de febrero de 2009, por laura
Aunque hay un trilln de pginas en internet
que hablan sobre cmo instalar y congurar un servidor svn, no
todas reproducen el proceso completo, as que para cada paso
hay que ir saltando de link en link hasta ms o menos tenerlo
todo listo, as que por eso he intentado reunir todos los pasos
aqu.

Control de versiones
Para llevar un control de los cambios que se realizan en el
cdigo fuente al desarrollar una aplicacin, se suelen usar
sistemas de control de versiones.
Estos sistemas pueden ser usados por varios
usuarios/desarrolladores al mismo tiempo, ya que stos se
conectan a un servidor central donde se guarda el repositorio
que contiene el cdigo fuente original y los cambios que se
van haciendo, junto con todos los datos necesarios para
conocer quien, cmo y porqu alguno de los usuarios ha
realizado un cambio.
De este modo el desarrollo de la aplicacin es mucho ms
ordenado y sobretodo sencillo porque estos programas

en la misma seccin
Cmo instalar aplicaciones
o ms...
Perdiendo datos...
Truco: Uso de Sudo en
Debian
Conguraciones varias en
Debian
Congurando la Airport
Extreme del...
Debian y el disco del Ibook
G4
= frases olvidadas =
Recopilaci
http://frasesolvidadas.es

Primero se llevaron a los


[...] - Citas
16 de julio
Primero se llevaron a los
comunistas, pero a mi no me
import porque yo no lo era;
enseguida se llevaron a unos
obreros, pero a m no me
import porque yo tampoco lo
era; despus detuvieron a los
sindicalistas, pero a m no me
import porque yo no soy
sindicalista; luego apresaron a
unos curas, pero como yo no
soy religioso, tampoco me
importo. Ahora me llevan a m,
pero ya es demasiado tarde.
(Bertolt Brecht)

permiten volver a una versin anterior y as poder deshacer


los errores que pueden aparecer en el avance de la
programacin.

Subversion
Aunque hay otras aplicaciones disponibles, uno de las mejores
actualmente, o eso dicen, es Subversion, tambin conocida

El arte, la gloria, la libertad


se [...] - Citas
16 de julio
El arte, la gloria, la libertad se
marchitan, pero la naturaleza
siempre permanece bella.
(George Gordon Byron, Lord
Byron)

como svn.

Uno a uno, todos somos


mortales. [...] - Citas

El svn tiene una arquitectura cliente-servidor con controles de

16 de julio
Uno a uno, todos somos
mortales. Juntos, somos
eternos. (Apuleyo)

concurrencia para cuando varios desarrolladores estan


trabajando en el mismo archivo no se produzcan problemas,
ya que est pendiente de si los cambios enviados al servidor
son compatibles o no, entre s. Subversion sirve para
mantener un historial de versiones tanto en cdigo fuente,
como en pginas web o en documentacin de cualquier tipo.
Funcionamiento
Al iniciar un proyecto, normalmente, se instala un repositorio
SVN en el servidor central. Este repositorio tiene una
estructura jerarquca de archivos que, por ejemplo para el
ProyectoA sera la siguiente:

El arte no es un espejo
para reejar [...] - Citas
16 de julio
El arte no es un espejo para
reejar el mundo, sino un
martillo con el que golpearlo.
(Vladimir Maiakovski)

Siempre se debe preferir el


bien [...] - Citas
16 de julio
Siempre se debe preferir el
bien general al particular.
Nuestro benecio particular no
debe tomarse en cuenta
cuando se trata del bien

Repositorio SVN
----> ProyectoA
---->trunk/
---->tags/
---->branches/

Donde el repositorio ProyectoA contendra estas carpetas:


trunk: carpeta donde reside el cdigo fuente en
desarrollo.
branches: carpeta donde estn guardadas las ramas,
versiones disponibles del cdigo.
tags: carpeta donde se guardan las etiquetas y nombres
de ramas que se van creando.
Los usuarios, en sus ordenadores o en sus /home del mismo
servidor, tendrn una copia local de la versin en desarrollo
que a cada uno les interese trabajar.
En los logs del servidor svn se registran los cambios y
revisiones que se generan. Es recomendable que cada cambio
importante, realizado sea mandad con un breve comentario al
servidor central para que este actualice el cdigo y as
siempre est disponible para los otros desarrolladores la
versin ms actualizada posible.
Instalacin del SVN
La instalacin en sistemas de tipo Debian es muy sencilla,
basta con emplear el famoso apt en una shell:
~>sudo apt-get install subversion
Tambin podemos instalar sus herramientas:
~>sudo apt-get install subversion-tools
El svn se ha de instala de igual modo en el servidor como en
los clientes, la diferencia est en que a partir de que el svn
est preparado en el servidor, el cliente, slo, ha de
conectarse a l y bajar el cdigo para empezar a programar,
pero esto se ver un poco ms tarde, a continuacin propongo
algunas conguraciones para el servidor de svn.
Conguracin
En principio, el servidor svn como tal no necesita ms
conguraciones, pero si se pretende usar el repositorio de
forma remota se ha de usar el servidor svnserve y por lo tanto
congurarlo.
As tambin, en algunos manuales aconsejan crear un nuevo
grupo para el svn y luego aadir algn usuario distinto de root
que pueda ejecutar el servidor svnserve:
# crea un nuevo grupo llamado subversion:

comn. (San Juan Bosco)

~> sudo groupadd subversion


# para aadir nuestro usuario al grupo subversion:
~> sudo addgroup tu_usuario subversion
Para arrancar el demonio se ejecuta este comando:
~> svnserve -d -r /home/demo/repository
svnserve es un servidor independiente, ejecutable como
proceso demonio o invocable por SSH; otra manera de hacer
que el repositorio est disponible para otros a travs de una
red.
La opcin d es para que arranque a modo de demonio y la
opcin r es para que funcionen los repositorios que pudieran
estar instalados por debajo del directorio repository/
Para su conguracin se utiliza el archivo /repositorio
/conf/svnserve.conf pero como avisa en el encabezamiento de
dicho archivo si se van a usar URLs de los tipos: http:// y le:///
la conguracin que se incluya en este archivo es totalmente
ignorada.[1]
Todo esto para una instalacin de svn en un entorno de red
limitado, si se tiene un entorno ms complejo, como fuera la
existencia de cortafuegos, habra que abrir puertos y para
permitir la comunicacin con los clientes del servidor.

Creando nuestro primer repositorio en el servidor


Una vez instalado el svn podemos rpidamente crear el
repositorio en algn directorio de nuestro servidor. Para ello
basta con ejecutar:
~>svnadmin create /path/repositorio
Creamos un directorio temporal y entramos en l:
~> mkdir tmpdir
~> cd tmpdir
Dentro debera ir toda la estructura de directorios
anteriormente comentada, as que creamos los directorios y
subdirectorios:
~>
~>
~>
~>

mkdir
mkdir
mkdir
mkdir

proyectoA
proyectoA/trunk
proyectoA/tags
proyectoA/branches

Para aadir los proyectos, si se tiene un proyecto empezado,


se reorganizara en las carpetas arriba comentadas, trunk,
tags, branches. Colocando todo el cdigo de nuestro proyecto
en la carpeta trunk/
Una vez creadas las carpetas y dispuesto el cdigo, hay que
llevarlo al repositorio, para que se pueda comenzar a
programar a travs del subversion:
~> svn import . le:///path/hasta/repositorio/proyectoA

message Creando el primer repositorio


El . en el comando anterior indica que la fuente del cdigo
inicial para el repositorio est en el mismo directorio donde
nos encontramos, es decir, que se halla en /tmpdir .
URLs de Acceso al Repositorio
Aunque en este artculo slamente se usar la url del tipo
le://, permite acceder a los repositorios desde disco local o
mediante algunos protocolos de red, siendo siempre la
ubicacin de un repositorio una URL. La url del tipo le:// slo
es vlida en el caso que tanto el cliente, como el servidor svn
estn en el mismo ordenador instalados.
Correspondencia entre los diferentes esquemas de URL y los
mtodos de acceso
Esquema
Mtodo de acceso
le:///
acceso directo al repositorio (en disco local)
http://
acceso va protocolo WebDAV a un servidor Apache
que entiende de Subversion
https://
igual que http://, pero con cifrado SSL
svn://
acceso va un protocolo personalizado a un servidor
svnserve
svn+ssh://igual que svn://, pero a travs de un tnel SSH
En general, los URLs de Subversion utilizan la sintaxis
estndar, permitiendo la especicacin de nombres de
servidores y nmeros de puertos como parte del URL.[2]
Una vez importado el cdigo, nos podemos deshacer del
directorio temporal,
~> cd ..
~> rm -rf tmpdir/
Hasta aqu todos los pasos para que el repositorio svn sea
accesible y funcional, a partir de este punto se proponen ideas
para que sea ms til y agradable trabajar con el servidor svn.

Activar el mdulo de Apache de Subversion


Para que se puedan mostrar los repositorios a travs de la
web se ha de activar un mdulo especial para el caso. Lo
primero instalar la librera correspondiente:
~> sudo apt-get install libapache2-svn
Para activar la nueva conguracin reiniciar el servidor
apache:
~> sudo /etc/init.d/apache2 restart
Normalmente tras la instalacin de esta librera lo lgico es
que se active el mdulo requerido, pero por si las moscas,
este es el comando para activarlo:
~> sudo a2enmod dav_svn

Conguracin del mdulo de Subversion


Para congurar este mdulo se ha de editar el archivo
dav_svn.conf que se encuentra en el directorio /etc/apache2/.
Esta es la conguracin que me ha servido para echar a andar
este servicio:

<Location /svn>
DAV svn
#SVNPath, permite acceder via apache a la
direccion: dominio/svn directamente
SVNPath /home/Usuario/svn
#SVNParentPath, permite acceder a directorios
superiores al repositorio, si y solo si, apache
tiene permisos de lectura sobre dichos directorios.
#SVNParentPath /home/Usuario/svn
# No pueden estar activados estas dos opciones (
SVNParentPath y SVNPath) simultaneamente.
AuthType Basic
AuthName "Repositorio Subversion del proyecto"
AuthUserFile /etc/apache2/dav_svn.passwd
<LimitExcept GET PROPFIND OPTIONS REPORT>
#

Require valid-user

</LimitExcept>
</Location>
CustomLog /var/log/apache2/svn/access.log
combined
ErrorLog /var/log/apache2/svn/error.log
Tras modicar este archivo, siempre, se ha de reiniciar el
servidor web, es decir, ejecutar esto:
~> sudo apache2ctl restart
Para comprobar si se puede ver el repositorio a travs de la
web, slo cabe ir a un navegador y escribir la direccin
correspondiente, por ejemplo:
http://dominio.que.setenga/repositorio/
Si no hay ningn problema y se puede navegar en el
repositorio, ya est listo para funcionar. El nico defecto es el
aspecto que tiene es como mnimo decepcionante. Por
fortuna, este aspecto se puede mejorar con algunos scripts
que se encuentran por la red. Uno de tantos es WebSVN.

WebSVN, la nueva cara para el repositorio


WebSVN es un script que es muy fcil de instalar y muy
interesante en cuanto a la informacin que aporta.
Su instalacin, como digo, es sencilla:
1- descargar el websvn de su web, preferiblemente la
versin ms reciente :)
2- Se descomprime en una carpeta que sea visible a travs
del servidor web. (por ejemplo en /var/www/)
3- Buscar el archivo distcong.php en el directorio /websvn
/include/ .
4- Copiar distcong.php renombrandolo como cong.php
5- Editamos este archivo de conguracin, para aadir estas
lneas:
$config->addRepository('NombreRepositorio',
'file:///pathr/hasta/repositorio');
6- Por ltimo, y para que los feeds rss puedan funcionar
debemos darle permisos (rwx) a la carpeta cache/ que se

encuentra en el directorio de websvn, haciendo:


~>chmod 0777 /.../websvn/cache
Con esto, comprobamos que al acceder a la pgina
http://dominio/websvn/ se ve nuevamente nuestro repositorio,
pero con un aspecto muy mejorado y un montn de
aplicaciones, datos y facilidades que no estn presentes sin el
uso de este script.

SVN y sus clientes


Desde el lado del cliente-programador, las cosas son ms
sencillas. A partir de que el programador se haya instalado el
svn, hay cientos de comandos que puede utilizar para la
interaccin con el svn, entre ellos quisiera descatar algunos.
Comandos tiles
Conseguir el cdigo:
~> svn checkout file:///ruta/hasta/repositorio
/ProyectoA/trunk /directorio/de/trabajo/ProyectoA/
Detecta todos los cambios de chero y rbol que el
cliente ha hecho en su copia local:
~> svn status
Vase la documentacin sobre este comando para entender
mejor la salida que muestra su ejecucin.
Actualizar el cdigo del proyecto:
~> svn update
Tras modicar y guardar los cambios, se envian al server:
~> svn commit --message 'comentario'
Aadir archivos al cdigo:
~> svn add /archivo-N/ --force
Mover o renombrar archivos en la copia local:
svn move archivo_inicial

archivo_final

Mover o renombrar archivos en la copia del servidor svn:


svn move -m "Mover archivo"
http://dominio.que.setenga/repositorio/trunk
/archivo_a_modificar.h http://dominio.que.setenga
/repositorio/trunk/archivo_modificado.h
o bien moverlo a otro directorio del mismo proyecto:
svn move -m "Muevo el archivo install.php a
includes/ " file:///home/Usuario/repositorio
/ProyectoA/trunk/install.php file:///home/Usuario
/repositorio/ProyectoA/trunk/includes/install.php
Borrar archivos:
~> svn delete archivo

Rechazar los cambios en un archivo:


~> svn revert archivo
Volver a una versin anterior determinada:
~> svn update -r N
Donde N denota la revisin N que a su vez representa el
estado del sistema de cheros del repositorio tras el envo de
cambios N-simo.
Ver un informe de los cambios producidor:
~> svn log
Fijar una versin, crear una rama, etiquetandola con un
nombre sencillo:
Etiquetando la ltima versin:
~> svn copy file:///path/repositorio/trunk
file:///path/repositorio/tags/0.01-prerelease -m
"Version 0.01"
O bien especicando una revisin concreta:
~> svn copy -r 3 file:///path/repositorio/trunk
file:///path/repositorio/tags/0.03-prerelease -m
"Version 0.03"
Para hacer una copia limpia del cdigo, y poderlo
distribuir
~> svn export file:///path/repositorio
/ProyectoA/trunk
~> tar -cvf proyectoA.tar trunk
~> gzip proyectoA.tar
Hacer copias de seguridad del repositorio:
~> svnadmin dump /paht/repositorio/ProyectoA | gzip
-9 > dump_svn_proyectoA.gz
Si se incluye en el CRON, se harn las copias de seguridad
cada tanto de una manera automtica.

Conclusiones
Comentar que se pueden tener tantos repositorios como se
deseen en un mismo servidor, y tambin se pueden tener
tantos proyectos en un mismo repositorio como se necesiten,
en realidad es cuestin de gustos elegir una u otra forma de
administrar los repositorios, eso si, no siempre conviene tener
todos los proyectos en un mismo repositorio, y a veces lo que
no conviene es lo contrario.
Y por ltimo, si es necesario borrar un repositorio por alguna
razn, basta con borrar el directorio en el que se ubica en el
disco duro del servidor. Eso s, este paso no se puede
deshacer ;).
Para ms informacin respecto a svn lo mejor es pasarse por la

pgina http://svnbook.red-bean.com/nightly/es/ , es una buena


fuente de informacin prctica. Adems para escribir este post
he visitado otras webs tambin muy tiles:
Instalacin y conguracin del SVN
http://blog.txurdi.net/2008/05/05/q...
http://www.softwarelibre.net/instal...
http://svnbook.red-bean.com/nightly...
http://kopernix.com/?q=svnd_como
http://crysol.inf-cr.uclm.es/node/162
http://picandocodigo.net/2008/08/re...
http://wiki.dns323.info/howto:subve...
Sobre el Uso de SVN
http://svnbook.red-bean.com/nightly...
http://nereida.deioc.ull.es/~lhp/pe...
http://lihuen.info.unlp.edu.ar/inde...]
Scripts para mejorar el aspecto del servidor svn a travs de
Apache
http://www.reposstyle.com/
http://websvn.tigris.org/ o http://www.websvn.info/
[1]This le controls the conguration of the svnserve daemon,
if you use it to allow access to this repository. (If you only allow
access through http: and/or le: URLs, then this le is
irrelevant.)
[2]Los usuarios del esquema le: en plataformas Windows
necesitarn usar una sintaxis estndar extraocial para
acceder a repositorios que estn en la misma mquina, pero en
una unidad de disco distinta de la que el cliente est utilizando
en el momento. Cualquiera de las dos siguientes sintaxis para
rutas de URL funcionarn siendo X la unidad donde reside el
repositorio:
C:> svn checkout le:///X:/ruta/a/repositorio
C:> svn checkout "le:///X|/ruta/a/repositorio"
En la segunda sintaxis, es necesario encerrar el URL entre
comillas para que la barra vertical no sea interpretada como una
tubera.
Ntese que un URL usa barras de separacin ordinarias an
cuando la forma de ruta nativa (no para URLs) en Windows
utiliza barras invertidas.

mensajes

15 de noviembre de 2009, 20:35


Muchas gracias Laura, breve y conciso.
29 de noviembre de 2010, 04:39
Excelente Laura te felicito sinceramente.
29 de diciembre de 2011, 15:31
Muchas gracias.
Claricador, con la informacin necesaria para trabajar.
12 de mayo, 01:28, por David
Muy buen aporte, espero hacerlo en un futuro cercano y te
comentare el resultado.
Gracias.

un mensaje, un comentario?
2003 - 2016 Laupri . com
Mapa del sitio | Conectarse | Contacto | RSS2.0

Untitled. All rights reserved. | Design: HTML5 UP

Вам также может понравиться