sábado, 8 de enero de 2011

SUBVERSION




Concepto Subversion.
Subversion es un sistema de control de versiones open source. Mediante Subversion, puede registrar la historia de archivos de código fuente y documentos. Gestiona archivos y directorios a través del tiempo. Se coloca un árbol de archivos en un repositorio central. El repositorio es como un servidor de archivos ordinario, excepto en que recuerda todos los cambios que se realizan sobre los archivos y los directorios que contiene.

Como funciona
Una copia de trabajo de Subversión es un árbol de directorios corriente de su sistema de archivos local, conteniendo una colección de archivos. Usted puede editar estos archivos del modo que prefiera y si se trata de archivos de código fuente, podrá compilar su programa a partir de ellos de la manera habitual. Su copia de trabajo es su área de trabajo privada: Subversión nunca incorporará los cambios de otra gente o pondrá a disposición de otros sus cambios hasta que usted le indique explícitamente que lo haga.
Tras hacer algunos cambios a los archivos en su copia de trabajo y verificar que funcionan correctamente, Subversión le proporciona comandos para “publicar” sus cambios al resto de personas que trabajan con usted en su proyecto (escribiendo en el repositorio). Si las demás personas publican sus propios cambios, Subversión le proporciona comandos para mezclar estos cambios en su directorio de trabajo (leyendo del repositorio).
Una copia de trabajo también contiene algunos archivos extra, creados y mantenidos por Subversión para ayudarle a ejecutar estos comandos. En particular, cada directorio de su copia de trabajo contiene un subdirectorio llamado .svn, también conocido como el directorio administrativo de la copia de trabajo. Los archivos en cada directorio administrativo ayudan a Subversión a reconocer qué archivos contienen cambios no publicados y qué archivos están desactualizados con respecto al trabajo hecho por los demás.
Un repositorio típico de Subversión contiene a menudo los archivos (o el código fuente) de varios proyectos; normalmente, cada proyecto es un subdirectorio en el árbol del sistema de archivos del repositorio. En esta disposición, la copia de trabajo de un usuario se corresponde habitualmente con un subárbol particular del repositorio.
Por ejemplo, suponga que usted tiene un repositorio que contiene dos proyectos de software, paint y calc. Cada proyecto reside en su propio subdirectorio dentro del directorio raíz.
Para conseguir una copia de trabajo, debe ejecutar primero un checkout de algún subárbol del repositorio. (crea una copia privada del proyecto).
 Por ejemplo, si usted hace un checkout de /calc, obtendrá una copia de trabajo como ésta:
$ svn checkout http://svn.example.com/repos/calc
A calc
A calc/Makefile
A calc/integer.c
A calc/button.c
$ ls -A calc
Makefileinteger.cbutton.c .svn/

La lista de letras A indica que Subversión está añadiendo una serie de elementos a su copia de trabajo. Usted ahora tiene una copia personal del directorio /calc del repositorio, con una entrada adicional—.svn—que contiene la información extra que Subversión necesita, tal y como se mencionó anteriormente.

Ventajas
§  Se sigue la historia de los archivos y directorios a través de copias y renombrados.
§  Las modificaciones (incluyendo cambios a varios archivos) son atómicas.
§  La creación de ramas y etiquetas es una operación más eficiente. Tiene costo de complejidad constante (O(1)) y no lineal (O(n)) como en CVS.
§  Se envían sólo las diferencias en ambas direcciones (en CVS siempre se envían al servidor archivos completos).
§  Puede ser servido mediante Apache, sobre WebDAV/DeltaV. Esto permite que clientes WebDAV utilicen Subversion de forma transparente.
§  Maneja eficientemente archivos binarios (a diferencia de CVS que los trata internamente como si fueran de texto).
§  Permite selectivamente el bloqueo de archivos. Se usa en archivos binarios que, al no poder fusionarse fácilmente, conviene que no sean editados por más de una persona a la vez.
§  Cuando se usa integrado a Apache permite utilizar todas las opciones que este servidor provee a la hora de autentificar archivos (SQLLDAPPAM, etc.).
§   
Desventajas.
§  El manejo de cambio de nombres de archivos no es completo. Lo maneja como la suma de una operación de copia y una de borrado.
§  No resuelve el problema de aplicar repetidamente parches entre ramas, no facilita llevar la cuenta de qué cambios se han realizado. Esto se resuelve siendo cuidadoso con los mensajes de commit.

Como instalar Subversión.
Instalar Subversión en LINUX
Para realizar la instalación seguimos los siguientes pasos:
Paso 1 – Instalar un servidor LAMPP
sudo apt-get apache2 php5-mysql libapache2-mod-php5 mysql-server
Paso 2 – Instalar Subversion
sudo apt-get install subversion libapache2-svn
Paso 3 – Crear un repositorio
Create the subversion repository in /svn
sudo svnadmin create /svn
Paso 4 – Configurar el módulo webdav
Editar el archivo de configuración del módulo webdav del apache. Utilize su editor favorito, en este caso yo utilizo nano.
sudo nano /etc/apache2/mods-enabled/dav_svn.conf
El archivo debería quedar como sigue:
DAV svn
SVNPath /svn
AuthType Basic
AuthName “Subversion Repository”
AuthUserFile /etc/apache2/dav_svn.passwd
Grabe el archivo.
Paso 5 – Crear un usuario en SVN
Para crear un usuario en el reposotorio utilize el siguiente comando:
sudo htpasswd -cm /etc/apache2/dav_svn.passwd
Ejemplo:
sudo htpasswd -cm /etc/apache2/dav_svn.passwd geek
New password:
Re-type new password:
Adding password for user geek
Paso 6 – Reiniciar el Apache
Reinicie el apache que se encuentra corriendo con el siguiente comand:
sudo /etc/init.d/apache2 restart
Ahora puede apuntar con el browser a http://www.server/svn, debería ver que el depósito está habilitado para el acceso de lectura anónima, pero se comprometen que el acceso exige un nombre de usuario.
Instalar Subversión en WINDOWS.
Para realizar la instalación seguimos los siguientes pasos:
1. Descargar subversion 1.4.4 y descomprimirlo
2. Copiar los archivos mod_authz_svn.so y mod_dav_svn.so , que se encuentra en svn-win32-1.4.4/bin, en APACHE_INSTALL_DIR/modules
3. Copiar los archivos intl3_svn.dll y libdb44.dll, que se encuentra en svn-win32-1.4.4/bin, en APACHE_INSTALL_DIR/bin
4. Añadir las siguientes líneas (en la sección donde está la carga de librerías) al archivo APACHE_INSTALL_DIR/conf/httpd.conf para cargar las correspondientes librerias:
1. 
LoadModule dav_svn_module modules/mod_dav_svn.so
2. LoadModule authz_svn_module modules/mod_authz_svn.so
3. LoadModule dav_module modules/mod_dav.so
5. LoadModule dav_fs_module modules/mod_dav_fs.so
6. 
Añadir la siguiente línea (al final) al archivo APACHE_INSTALL_DIR/conf/httpd.conf para cargar la configuración de subversion:
1. Include “APACHE_INSTALL_DIR/conf/extra/httpd-subversion.conf”
7. Creamos el archivo APACHE_INSTALL_DIR/conf/extra/httpd-subversion.conf con la siguiente configuración (es sólo un ejemplo):
1. 
DAV svn
SVNParentPath “C:/tools/wamp/tmp/svn”
AuthzSVNAccessFile “C:/tools/wamp/Apache2/conf/access-policy/svn-groups.conf”
AuthType Basic
AuthName “Subversion repository”
Require valid-user
AuthUserFile “C:/tools/wamp/Apache2/conf/access-policy/svn-users.conf”
2. Cuidado con las rutas eso es sólo un ejemplo. Básicamente se indica donde van a       estar    nuestros repositorios de subversion, el archivo con los grupos y usuario de subversion
8. Ahora tenemos que crear los archivos svn-groups.conf y svn-users.conf. Para el primero de ellos tenemos:
1. [groups]
test-group: recena
[test:/]
@test-group:rw
1. Definición de grupos y a continuación, nombre del repositorio (que tendremos que crearlo) y permisos del grupo sobre el raiz del repositorio.
2. Para crear un usuario, hacemos uso de la utilidad htpasswd que nos proporciona Apache.
Para crear el repositorio hacemos uso de la utilidad svnadmin que proporciona subversión.

Crear un repositorio
Subversion es un sistema de control de versiones que permite tener un control sobre las modificaciones que ha sufrido un archivo fuente en el desarrollo de un proyecto de software, haciendo posible la comparacion entre las diferentes versiones, identificar los cambios que se han producido, obtener la fecha de cada cambio e incluso el usuario que ha realizado dichas modificaciones. SVN como se conoce comumente a Subversion es una herramienta ideal para administrar desarrollo realizados por multiples programadores, asi como tambien llevar un estricto control sobre las versiones y modificaciones que ha tenido un software en su tiempo de vida, por tal motivo a continuacion describiremos como instalar un servidor de subversion en Ubuntu 8.10 :
Instalar Paquetes:
·         Abrir una consola
·         Instalar los paquetes necesarios
sudo apt-get install subversion
·         Crear directorio para alojar los proyectos
sudo mkdir /home/svn
Crear Proyecto :
·         Cambiar al directorio de proyectos
cd /home/svn
·         Crear directorio con el nombre del proyecto
sudo mkdir project
·         Cambiar el dueño del directorio para que el servidor web pueda escribir los datos
sudo chown -R www-data:www-data /home/svn
·         Crear la estructura del proyecto en subversion
sudo svnadmin create /home/svn/Project

Crear usuarios y dar permisos
Para crear el primer usuario, ejecute(cambie <usuario> por el nombre de usuario a crear) :sudo htpasswd -c /etc/subversion/passwd <usuario>A continuacion suministre la clave asignada al usuario Para crear el segundo utilice el mismocomando pero sin la opcion -csudo htpasswd /etc/subversion/passwd <usuario>
Autenticación selectiva
Ahora editaremos el fichero de autorización, pudiendo definir grupos (en la sección [groups]) yluego definiendo rutas del repositorio con un listado de los permisos de los usuarios y/o grupos adichas secciones:# vim /home/svn/conf/authzEl contenido mímino sería algo similar a:[groups]admins = root[/]@admins = rwEn este fichero, se supone que tenemos que haber creado en el paso anterior un usuario root, de modo que dicho usuario root es añadido a un grupo llamado admins, luego se define la sección [/],es decir la raíz del repositorio, a la cual damos accesos de lectura y escritorio sólo a dicho grupo y anadie más.El fichero antes de que lo edites tiene mucha documentación al respecto de cómo configurarlo, esmuy recomendable que lo leas con calma para evaluar las diferentes opciones que te puede dar sucorrecto uso.
Configurar permisos de ficheros
Dado que todas las operaciones las hemos hecho por comodidad como usuario root antes determinar tendremos que asignar los permisos de la carpeta /home/svn al usuario que realmente tieneque usarlos, que en este caso es Apache2 y por ende www-data:chown -R www-data:www-data /home/svnFinalmente reiniciamos Apache2 y listo:/etc/init.d/apache2 restart
Comando principales.

-          Crear un repositorio nuevo:
svnadmin create nombre_repositorio
-          Añadir un árbol de directorios al repositorio
svn import path_al_directorio nombre_repositorio
-          Obtener una copia de trabajo
svn checkout file:///nombre_repositorio/dir directorio_de_trabajo
-          Obtener una copia sin control de versiones
svn export file:///nombre_repositorio/dir directorio_destino
-          Hacer una copia de seguridad de todo el repositorio
svnadmin dump nombre_repositorio > ficheroBackup
-          Restaurar una copia de seguridad en un nuevo repositorio
svnadmin create nombre_nuevo_repositorio
svnadmin load nombre_nuevo_repositorio < ficheroBackup
-          Ver el estado actual de la copia de trabajo
svn status
-          Añadir nuevos ficheros o directorios
svn add nombre_fichero
-          Eliminar ficheros
svn del nombre_fichero –forcé
-          Actualizar la copia de trabajo con los últimos cambios en el repositorio
svn update
-          Actualizar el repositorio con los cambios de tu copia de trabajo
svn commit -m “Mensaje para etiquetar los cambios”

 FUENTE:


No hay comentarios:

Publicar un comentario en la entrada