SUBVERSION

Anuncio
SUBVERSION
Subversion es un servicio encargado de controlar el desarrollo de los distintos proyectos que
se crean en una empresa de desarrollo de software.
Este programa nace con el objetivo en mente de sustituir a CVS (Concurrent Versioning
System), el cual se ha demostrado que tiene bastantes carencias y limitaciones.
Es un sistema de control de versiones libre. Su licencia es la Apache 1.1. Subversion se
encarga de mantener un árbol histórico de ficheros y directorios a lo largo del tiempo.
Esta idea no es nueva y tampoco se está reinventando la rueda, simplemente se está
mejorando. Al parecer, en el año 2000 los desarrolladores de CollabNet estaban realmente
quemados por los problemas que causaba el uso de CVS (cuya idea se fraguó en 1985) en su
suite de desarrollo SourceCast. Fue en ese año cuando comenzaron a buscar programadores
para el diseño e implementación de Subversion con la idea en mente de mejorar CVS y
sustituirlo como componente de SourceCast en favor de Subversion.
Allá por Febrero de 2000 el grupo CollabNet contactó con Karl Fogel, un hombre que llevaba
años ofreciendo el servicio de CVS a empresas para controlar sus desarrollos junto a su amigo
Jim Blandy. El segundo permitió al primero dedicarse enteramente al proyecto Subversion de
manera indefinida.
El número de desarrolladores creció debido a que el proyecto atrajo a mucha gente que
compartía los mismos deseos: mejorar CVS. Así, después de poco más de un año de
programación, los desarrolladores de Subversion empezaron a usar su propio sistema en lugar
de CVS, que era lo que usaban hasta ese momento.
Algunas de las características que hacen de Subversion un digno sucesor de CVS son:
✔ Histórico de directorios: a diferencia de CVS, la nueva implementación permite
mantener un histórico de directorios creados, renombrados y/o borrados.
✔ Histórico real de archivos: CVS guardaba todos los cambios realizados sobre un
archivo en un fichero de texto. Esto representaba un serio problema porque a la hora
de, por ejemplo, crear un fichero con el nombre de otro que ya existía, se heredaba el
histórico del fichero viejo aunque ya no tuvieran nada en común. Eso ha dejado de
ocurrir: ahora cualquier operación que incluya copiado, renombrado, borrado o
añadido tendrá su propio histórico.
✔ Consistencia de los datos almacenados: Subversion maneja de igual manera ficheros
de texto y binarios: hace uso de un algoritmo de "diferenciación" que permite
compresión de los datos dentro del repositorio y, además, se apoya en una base de
datos BDB (Berkeley DB).
✔ Transacciones:
Igual que en el banco cuando efectuamos una operación, en
Subversion las modificaciones del repositorio se realizan completas o no se realizan.
O se realizan todos los pasos o no se realiza ninguno. Nunca se quedará un commit a
mitad.
✔ Modificable: Subversion ha sido diseñado de forma que cualquier modificación no
conlleve demasiado esfuerzo: consiste básicamente en una serie de APIs bien
definidas programadas en varias librerías compartidas.
Miniguía para nuestro proyecto.
Crear un proyecto # svnadmin create bmserver
Crea el proyecto en /var/svn/bmserver
Importar el proyecto
# svn import . file:///var/svn/bmserver --message “import inicial”
Añade los ficheros fuente que tengamos en el directorio actual “.” al repositorio de
subversion, esto se hace la primera vez, cuando se crea el proyecto.
Obtener una copia inicial del proyecto para empezar a trabajar
$ svn checkout file:///var/svn/bmserver .
$ svn checkout svn://lcg.zapto.org/bmserver .
Sincronizar última versión SVN –> local (bajar última versión)
$ svn update
Sincronizar cambios desde local –> SVN (subir modificaciones)
$ svn commit
Actualiza sólo los ficheros que han sufrido cambios.
Obligatorio poner el mensaje del concepto de la actualización.
Conviene hacerlo bastante, no una vez al día, sino cada cambio interesante.
Ver los cambios que hemos hecho y que se van a subir en el commit
$ svn status
Ver histórico de cambios
$ svn log
Muestra todos los cambios
$ svn log main.cpp
Muestra los cambios en un fichero concreto.
Ver los ficheros que hay en el repositorio
$ svnlook tree /var/svn/bmserver
Ver la información del proyecto actual
$ svn info
(sólo administrador)
Trabajo con ficheros
$
$
$
$
svn
svn
svn
svn
add pp.cpp
delete pp.cpp
copy origen.cpp destino.cpp
move origen.cpp destino.cpp
Usaremos estos comandos para que SVN se entere de que un fichero es copia o ha sido
movido y que no piense que es uno nuevo.
Si no hacemos el delete, no borraría el fichero del repositorio SVN.
Estas acciones se actualizan en el servidor SVN al hacer el commit.
Se puede ver lo que hay pendiente con el status.
$ svn revert main.cpp
Deshace los cambios hechos a un fichero.
$ svn commit
Subirá los cambios realizados al repositorio SVN.
Obligatorio poner descripción. La descripción debe ser concisa y descriptiva de los
cambios realizados.
$ svn update
Actualizamos nuestra copia local a la versión actual.
$ svn checkout --revision 2
Nos permite actualizar a una versión antigua.
Manual de Subversion: http://svnbook.red-bean.com/svnbook/
Instalación de Subversion
1. Añadir a las fuentes de apt la siguiente línea
deb http://people.debian.org/~adconrad woody subversion
2. Descargar Subversion borrando antes CVS si lo tenemos instalado
# apt-get --purge remove cvs
# apt-get install subversion
3. Arrancar Subversion como demonio en el servidor de repositorio
# svnserve -d -r /var/svn/
4. Configurar el modo de autentificación y crear los usuarios para SVN
Los ficheros de configuración son para cada proyecto.
Vamos a editar el fichero de configuración del proyecto bmserver
$ vi /var/svn/bmserver/conf/svnserve.conf
Inicialmente está todo comentado, así que lo mejor podría ser irse al final del fichero y
añadir:
[general]
anon-access = none
auth-access = write
realm = BomberMan
password-db = userfile
<<<<-
No permitiremos accesos anónimos
Los usuarios pueden leer y escribir
Nombre del proyecto
Fichero de usuarios y passwords
Ahora creamos el fichero “userfile” donde especificaremos los usuarios y sus
contraseñas.
Obviamente estos usuarios no son del sistema ;-D
$ vi /var/svn/bmserver/conf/svnserve.conf
[users]
leo = yngwie
manolo = malmsteen
No hace falta reiniciar svnserve.
Ahora al hacer accesos al servidor nos pedirá contraseña.
Sólo pide auth la primera vez, luego usa auth-cache
Toma como usuario el $USER del sistema.
Se puede especificar un usuario distinto con –username “NOMBRE”
Descargar