Instalacion y Configuracion de Subversion en Ubuntu 9.04

17
Universidad de San Carlos de Guatemala Facultad de Ingeniería Escuela de Ciencias y Sistemas Análisis y Diseño de Sistemas 2 Ing. Mario Reyes Aux. Víctor Orozco y Jennifer Donis Martinez Practica # 1 Mario Ramón Castellanos Arana 2005 – 12086 Guatemala, Julio de 2009

description

Instalacion y configuracion de Subversion en Ubuntu 9.04 con integracion en Apache mediante WebDAV y WebSVN.Ejemplos de manejo de proyectos con repositorio mediante Netbeans y comandos basicos de Subversion.

Transcript of Instalacion y Configuracion de Subversion en Ubuntu 9.04

Page 1: Instalacion y Configuracion de Subversion en Ubuntu 9.04

Universidad de San Carlos de GuatemalaFacultad de IngenieríaEscuela de Ciencias y SistemasAnálisis y Diseño de Sistemas 2Ing. Mario ReyesAux. Víctor Orozco y Jennifer Donis Martinez

Practica # 1

Mario Ramón Castellanos Arana

2005 – 12086

Guatemala, Julio de 2009

Page 2: Instalacion y Configuracion de Subversion en Ubuntu 9.04

Configuración de Subversion e integración con Apache 2 mediante WebDAV (Ubuntu)

Instalamos los paquetes necesarios$ sudo apt-get install subversion subversion-tools apache2 libapache2-svn

Creamos un grupo en el sistema operativo$ sudo groupadd subversion

Y agregamos el usuario de apache “www-data” al grupo que creamos anteriormente$ sudo adduser www-data subversion

Ahora creamos un usuario en un archivo que apache utilizara para acceder al sitio, nos pedirá la contraseña del usuario$ sudo htpasswd /etc/apache2/dav_svn.passwd nombreusuario

Creamos un directorio para almacenar el repositorio$ sudo mkdir -p /var/svn-repos

Ahora creamos un proyecto$ svnadmin create /var/svn-repos/practica1

Le damos los permisos al repositorio$ sudo chown -R www-data:subversion /var/svn-repos/practica1$ sudo chmod -R 770 /var/svn-repos/practica1

Ahora modificamos el archivo de webDAV para que sea habilitado$ sudo gedit /etc/apache2/mods-available/dav_svn.conf

Y nos tiene que quedar mas o menos de esta manera:

<Location /svn/practica1> DAV svn SVNPath /var/svn-repos/practica1 #SVNParentPath /var/svn-repos/practica1

#SVNParentPath se puede usar en vez de SVNPathSVNIndexXSLT "/svnindex.xsl"

#para el estilo de la paginaAuthType Basic AuthName "Repositorio para Practica 1" AuthUserFile /etc/apache2/dav_svn.passwd <LimitExcept GET PROPFIND OPTIONS REPORT>

Require valid-user </LimitExcept>

</Location>

Page 3: Instalacion y Configuracion de Subversion en Ubuntu 9.04

En Location se indica el url por el cual se ingresara al repositorio.SVNPath es el path completo del proyecto en el repositorio.

Ahora copiamos los archivos para el estilo “svnindex.css” y “svnindex.xsl” en la carpeta de apache$ sudo mv '/home/mario/svnindex.css' /var/www$ sudo mv '/home/mario/svnindex.xsl' /var/www

Y le cambiamos los permisos a los 2 archivos$ sudo chown www-data:subversion /var/www/index.css$ sudo chown www-data:subversion /var/www/index.xsl

Y por ultimo reiniciamos Apache$ sudo /etc/init.d/apache2 restart

Y solo nos queda ingresar a nuestro sitio http://localhost/svn/practica1

Creamos la estructura de directorios (Trunk, Tags y Branches)$ sudo svn mkdir file:///var/svn-repos/practica1/trunk -m "Trunk" $ sudo svn mkdir file:///var/svn-repos/practica1/tags -m "Tags" $ sudo svn mkdir file:///var/svn-repos/practica1/branches -m "Branches"

Y actualizamos nuestro sitio, y listo!!!.

Instalación y configuración de Websvn

Descargamos el paquete websvn (requiere php5 pero lo instala de una vez)$ sudo apt-get install websvn

Luego nos pedirá si queremos configurarlo, le damos que si e ingresamos primero los directorios padres y después los directorios que queramos que aparezcan en la pagina.

Y por ultimo ingresamos a la pagina http://localhost/websvn y listo.

Page 4: Instalacion y Configuracion de Subversion en Ubuntu 9.04

Creacion de un Proyecto en Netbeans e importarlo al Repositorio de Subversion

Configuración de Netbeans y Subversion

Requisitos recomendados:

• Netbeans 6.7 en Español

Abierto el Netbeans seleccionamos Equipo en el menú estándar y seleccionamos Subversion y luego Extraer

El enlace con Subversion sera mediante webDAV. Ingresamos el url del repositorio, el usuario y contraseña creada anteriormente.

Seguidamente verificamos que la carpeta de TRUNK este seleccionada para la revisión.

Page 5: Instalacion y Configuracion de Subversion en Ubuntu 9.04

Seguidamente creamos un proyecto cualquiera y le damos click derecho y luego en CONTROL DE VERSIONES y después en IMPORTAR AL RESPOSITORIO DE SUBVESION.

Nos aparecerá la siguiente imagen donde especificaremos el repositorio y el usuario.

Page 6: Instalacion y Configuracion de Subversion en Ubuntu 9.04

Luego ingresamos el repositorio a donde se importara el proyecto y le agregamos un comentario.

Seleccionamos los archivos y carpetas que queremos importar.

Esperamos..... y si no aparece ningún error lo podemos ver en el explorador.

Page 7: Instalacion y Configuracion de Subversion en Ubuntu 9.04
Page 8: Instalacion y Configuracion de Subversion en Ubuntu 9.04

Comandos en Subversion

svn: es el programa cliente en lineas de comandos, osea que se puede agregar, importar y actualizar archivos al repositorio central.

svnadmin: herramienta para crear, modificar o reparar un repositorio de Subversion.

Comandos para SVN:

• checkout: Este genera una referencia o copia del repositorio central hacia un repositorio local.

svn checkout [URL] [PATH]Si se omite el path, se toma el path base de la URL que se está utilizando como destino. Nos encontramos en el directorio “/home/mario/pruebas” y el repositorio central esta en “/var/svn-repos/practica1/”, entonces el comando seria

svn co file:///var/svn-repos/practica1/svn checkout

y nos importa todo lo que tengamos en el directorio.Otros ejemplos:

svn checkout file:///tmp/repos/test file:///tmp/repos/quizsvn checkout http://host_name/svn_dir/repository_name/project/trunk proyecto

• copy: Copia un archivo en una copia de trabajo o en el repositorio.svn copy FUENTE DESTINO

Ejemplo:svn copy foo.txt bar.txt

• update: Actualiza los cambios que hay en el repositorio hacia nuestra copia de trabajo actual.

svn update [PATH...]Ejemplo:

svn update

• import: Realiza un commit recursivo de lo que hay en path hacia URL. Este comando sirve para añadir archivos al repositorio. Por lo general cuando se crea un proyecto, la primera vez se hace un import para copiar todo el proyecto al servidor (repositorio local o remoto).

svn import path_al_directorio nombre_repositorioEjemplo:

svn import /home/mario/pruebas/proyecto1 /var/svn-repos/practica1svn import proyecto http://host_name/svn_dir/repository_name/project -m "inicio"

Page 9: Instalacion y Configuracion de Subversion en Ubuntu 9.04

• add: Añadir archivos, directorios o enlaces simbólicos al repositorio central.svn add PATH

Ejemplo:svn add archivo.txt

Este se agregara hasta darle un COMMIT.

• commit: Envía los cambios realizados en nuestra copia de trabajo hacia el repositorio.

svn commit [PATH...]Luego de añadir los archivos o proyectos con ADD se tiene que dar commit para que realice los cambios en el repositorio central.Ejemplo:

svn add archivo.txtsvn commit

Luego aparece una especie de LOG, le agregan un comentario al archivo commit que se crea (LOG) para que los demás usuarios sepa que se hizo con ese commit. Y para salir un CTRL- X.Para crear el log automáticamente se pone el parámetro “m” y luego el mensaje.

svn commit -m "mensaje" [PATH..]svn commit -m "haciendo cambios" http://localhost/svn_dir/repository/project_dir

• delete: Igual que el ADD solo que este elimina archivos o directorios.svn delete hellworld.txtsvn commit -m "elimino el fichero helloworld"

Comandos Útiles:

Bueno, de verdad ya estoy algo cansada, este artículo se hizo medio largo. Así que les dejo algunos comandos útiles para que experimenten con Subversion:

Información sobre el repositorio:svn info

Información sobre la última revisión:svn status --show-updates --verbose

Obtener una revisión en concreto:svn checkout --revision [número de revisión]

Actualizar copia local con una revisión en concreto:svn update --revision [número de revisión]

Diferencias entre la copia local y el repositorio:svn diff

Comandos para SVNADMIN:

• create: Crea un directorio en la ruta especificada.

Page 10: Instalacion y Configuracion de Subversion en Ubuntu 9.04

svnadmin create /var/svn-repos/practica1

• recover: Este comando debe de ser ejecutado cuando obtenemos un error de que nuestro repositorio debe de ser recuperado.

svnadmin recover REPOS_PATHEjemplo:

$ svnadmin recover /usr/local/svn/repos

• load: Lee un “dumpfile” el cual es un stream con formato proveniente de stdin, realiza commit al repositorio del sistema de las nuevas revisiones existentes. Envia el progreso hacia stdout.

svnadmin load REPOS_PATHEjemplo:

$ svnadmin load –parent-dir new/subdir/for/project /usr/local/svn/restored

• dump: Envía el contenido de un repositorio del sistema hacia un archivo “dumpfile”.

svnadmin dump REPOS_PATH [-r LOWER[:UPPER]] [--incremental]Ejemplo:

$ svnadmin dump /usr/local/svn/repos -r 21 –incremental

Page 11: Instalacion y Configuracion de Subversion en Ubuntu 9.04

Ejemplo de Branch y Tag en Subversion

Branch y Tag simplemente son directorios nombrados en una estructura recomendada en Subversion.

/trunk/branches/tags

Estos directorios (de branch y tag) son simplemente eso: copias de código, sin ninguna característica particular. Los desarrolladores les dan el uso y sentido correspondiente a estas copias. Como los branches y tags son directorios comunes, el comando svn move puede moverlos o renombrarlos a gusto. Por lo tanto, cambiar de una estructura a otra es tan solo ejecutar los comandos para moverlo a una nueva organización.

Branch:

“Es una nueva línea de desarrollo en el repositorio creada a partir de la línea principal de desarrollo o de otra rama Branch”

Son ramificiones del proyecto. En pocas palabras es una linea de modificacion sobre la linea base que se controla aparte.Las motivaciones principales del por que realizar Branchs son:

• Mantener varias versiones de un mismo proyecto • Ejemplo: una branch para cada release: bugs, testing y trunk • Evitar conflictos con los demás desarrolladores durante cambios complejos

Creando un Branch

Supongamos que es el momento de liberar un proyecto estable calc al público, y usted sabe que va a tomar un par de meses para resolver los errores. Por lo tanto no se quiere que la gente añada nuevas características al proyecto y tampoco se le quiere decir a todos los desarrolladores, ya sea para poner fin a la programación. Así que se crea un Branch "estable" para que no ocurra algun cambio:

$ svn copy http://svn.example.com/repos/calc/trunk \ $ Svn copy http://svn.example.com/repos/calc/branches/stable-1.0 \ -m "Creación de la rama estable del proyecto CALC."

Committed revision 377.

Tag:

“Es la versión congelada de un proyecto en un momento dado.”Ejemplo: un tag por cada release final

Page 12: Instalacion y Configuracion de Subversion en Ubuntu 9.04

Al igual que con los branch, crear un tag en Subversion es simplemente realizar una copia de los archivos. Esta copia se ubica en el directorio /tags del proyecto, por ejemplo,

/tags/release-1.0.

Creando un Tag

Tambien se utiliza svn copy. Ejemplo, se desea crear un tag de /calc/trunk$ svn copy http://svn.example.com/repos/calc/trunk \

http://svn.example.com/repos/calc/tags/release-1.0 \-m "Tagging the 1.0 release of the 'calc' project."

Committed revision 351.

Merge:

El merge es cuando queremos aplicar los cambios que realizamos en nuestro directorio local hacia el proyecto que se encuentra en el repositorio central.

Cuando se trabaja con branches surgen dos necesidades: • exportar modificaciones puntuales de la línea principal a una branch • actualizar la línea principal de desarrollo con una branch

El comando que se utiliza es svn merge • svn merge arbolA arbolB directorio

d

1. arbolA: un árbol, del repositorio, inicial (parte izquierda de la comparación)2. arbolB: un árbol, del repositorio, final (parte derecha de la comparación)3. directorio:Directorio localsvn merge realiza un diff entre el árbol inicial y final y tras calcular las diferencias, se aplican en el directorio local.

Realizando un Merge

• $ svn merge http://ma.qui.na/repositorio/branch1@150 \http://ma.qui.na/repositorio/branch2@212 \mi-directorio

• $ svn merge -r 100:200 http://ma.qui.na/repositorio/trunk

El siguiente comando obtendría la diferencia entre la revisión número 15 de la rama experimental1 (Branch) en el repositorio y la revisión número 30 -la última- de la rama principal, y posteriormente aplicaría dicha diferencia a la copia local myproject/ (tag):

• $ svn merge http://localhost/svn/myproject/branches/experimental1@15http://localhost/svn/myproject/trunk@30 myproject/

Page 13: Instalacion y Configuracion de Subversion en Ubuntu 9.04

Comparativa de Subversion y Mercurial

Mercurial es un sistema de control de versiones distribuido que lo utilizan Mozilla, OpenJDK, Netbeans, entre otras. Algunos criticos comentan que estos sistemas de control de versiones distribuidos manejan bien los Branchs, entre otras cosas, en lo personal como no tengo la experiencia suficiente asumo que asi lo es.

Aqui dejo algunos comentarios de usuarios avanzados:

Ventajas Mercurial

• Sencillo que es publicar los proyectos• Facil configuracion web. Corre como cgi y con autentificación, que se configura de

manera trivial y ningún problema con proxies ni nada.• Cuenta con buenas herramientas como hg view que se puede ver el grafo de

evolución, por ejemplo:

• gran velocidad de funcionamiento y escalabilidad• minimizar los efectos de latencia de red• amplica documentacion

Desventajas de Mercurial

• Dedicado para grandes proyectos.

Page 14: Instalacion y Configuracion de Subversion en Ubuntu 9.04

Ventajas de Subversion

• Hay mas herramientas para implementar• Es el mas utilizado por lo tanto tiene mas recursos y herramientas.• Gran numero de herramientas especialmente interfaces cliente

Desventajas Subversion

• Con subversión es mucho trámite, se tiene que integrar apache con svn a través de WebDAV, y la autentificación por los archivos ht*. Otro problema que tuvimos, son los proxies, que no soportan métodos DAV entonces, si uno esta detrás de un proxy, no se puede trabajar con un repositorio http, hay que usar https.

• Para la mayoría de sus operaciones, necesita conetarse al repositorio principal.

Page 15: Instalacion y Configuracion de Subversion en Ubuntu 9.04

Screenshots

WebDAV

Page 16: Instalacion y Configuracion de Subversion en Ubuntu 9.04

Websvn

Page 17: Instalacion y Configuracion de Subversion en Ubuntu 9.04

Fuentes:

http://elverdaderoblogdelaob.wordpress.com/2009/06/14/utilizacion-de-svn-y-svnadmin-trac-y-hudson/

http://sherekan.com.ar/2008/03/25/instalacion-configuracion-y-uso-de-subversion-en-linux/

http://chany1989.blogspot.com/

http://mario502gt.blogspot.com/

http://diagonalasterisco.blogspot.com/2009/06/integracion-de-subversion-y-netbeans.html

http://www.dosideas.com/wiki/Branch_Tag_Con_Subversion

http://en.wikipedia.org/wiki/Comparison_of_revision_control_software

http://www.smashingmagazine.com/2008/09/18/the-top-7-open-source-version-control-systems/