Documente Academic
Documente Profesional
Documente Cultură
GUIA DE
TRABAJO CON
SUBVERSION EN
NETBEANS
Contenido
Contenido ............................................................................................................................................ 1
Repositorio RiuxSVN............................................................................................................................ 5
COMENCEMOS. ............................................................................................................................... 5
Configurar cuenta............................................................................................................................ 8
TortoiseSVN....................................................................................................................................... 17
Resolucin de conflictos................................................................................................................ 42
Bibliografa. ....................................................................................................................................... 49
Subversin se encarga de mantener diferentes versiones de cada uno de los elementos software
de un proyecto, sin limitarse nicamente al cdigo fuente, tambien proporciona mecanismos para
facilitar el trabajo colaborativo, que entre otras cosas ayudan a evitar la sobreescritura de
versiones y la consecuente prdida de informacin. Si bien es responsabilidad ltima de los
usuarios controlar estas situaciones. Es importante recordar que Subversion no slo versiona
ficheros, sino tambin carpetas e, incluso, las operaciones de mover y copiar se pueden realizar
sobre unos y otras.
En Subversion un repositorio es una secuencia de rboles de directorios. Cada rbol es una imagen
del estado del software versionado en un momento del tiempo. Estas imgenes se llaman
revisiones y son el producto de las operaciones de los participantes en el proyecto que tienen
acceso al repositorio. Cada revisin tiene propiedades que no son versionadas, es decir, si se
modifican se pierde su valor anterior.
Cuando se trabaja con ficheros compartidos, varios usuarios se conectan al repositorio, para
acceder a esos ficheros, ya sea para leer o escribir en ellos. De este modo comparten la
informacin. El problema que puede surgir es, que en un acceso simultneo, mientras un cliente
est actualizando una versin de un fichero, otro est leyendo esa misma versin, pero sin
conocer esa nueva actualizacin. Es decir, distintas personas estn trabajando con distintas
versiones del software, lo que da lugar a problemas e inconsistencias en la informacin.
Existen varios modelos de versionado para resolver este problema. El utilizado por Subversion
consiste en copiar-modificar-fusionar. Cada usuario crea una copia de trabajo personal de un
fichero, una carpeta o de todo el proyecto en la mquina local. Los usuarios trabajan
simultneamente, modificando sus copias privadas. Cuando uno de ellos termina, incorpora sus
modificaciones al repositorio. Cuando, despus, otro usuario intenta incorporar sus cambios,
Subversion le indica que su copia de trabajo est desactualizada (ha cambiado desde que lo
copi).
Este segundo usuario pide entonces a Subversion que fusione cualquier cambio del nuevo
repositorio en su copia de trabajo. Si los cambios no se solapan la tarea es muy sencilla. Pero si los
cambios s se superponen aparece una situacin de conflicto, entonces la fusin se realiza
manualmente al poder observar los cambios existentes en el repositorio y los que el usuario haba
introducido en su copia de trabajo. Resuelto el conflicto se pueden incorporar los cambios en el
repositorio. Normalmente estas situaciones son llamadas colisiones, y aunque manualmente es
posible mezclar varias versiones de un mismo elemento software que fueron creadas en paralelo,
es conveniente prevenir y evitar que esto ocurra. El motivo es que, frecuentemente, los cambios
efectuados son incompatibles y, por tanto, no directamente fusionables, con la consiguiente
prdida de tiempo y de trabajo. Para prevenir estas situaciones es necesario contar con una
correcta planificacin y reparto de tareas.
Cuando se trabaja en red con Subversion, suele existir un repositorio comn en algn servidor y
varios clientes o usuarios que se conectan a travs de la red. En estos casos el funcionamiento o
modelo de red se basa en peticiones y respuestas. Cada usuario pasa la mayor parte del tiempo
manejando copias de trabajo. Cuando necesita informacin de un repositorio, hace una peticin
mediante un acceso a una URL. El servidor le pide que se identifique y, una vez realizada la
autenticacin, el servidor le responde. Es decir, el cliente hace primero la peticin y slo se le
requerir la identificacin si la peticin realizada lo solicita. Si, por ejemplo, el repositorio est
configurado para que todo el mundo pueda leer en l, nunca se pedir autenticacin para una
solicitud de una copia de trabajo en un directorio local.
Si el cliente hace una peticin que implica escribir en el repositorio, como, por ejemplo, confirmar
los cambios realizados, se crea un nuevo rbol de revisin. Si la peticin del cliente ya fue
autenticada, el nombre del usuario identificado se almacena en la variable svn:autor de la nueva
revisin. Si el servidor no pidi la identificacin al cliente, la propiedad svn:autor estar vaca.
Primeros pasos:
El objetivo del presente material es conocer los primeros pasos que hay seguir para trabajar con
Subversion al crear un repositorio dentro de RiuxSVN, este repositorio nos ayudara a guardar
nuestras versiones de codigo creadas durante nuestro de curso de Ingeniera de Software II.
Repositorio RiuxSVN
RiuxSVN es un proyecto que se basa en un equipo de voluntarios compestos por desarrolladores
web y administradores de sistemas. Ofrece el alojamiento de 50 MB gratuito en cuatro
repositorios y el tamao del equipo es ilimitado con cuatro ranuras de recompra por defecto
donde uno puede ir agregando mas espacio en disco y en numero de repositorios mediante la
compra de creditos. Por cada dlar donado equivale a un credito que se puede canjear por 20 MB
y por cada dos dolares donados se puede canjar por un repositorio extra.
COMENCEMOS.
Lo primero que hacemos esingresar al sitio para creanos una cuenta cuenta, para ello nos vamos a
https://riouxsvn.com/login y completamos todos los datos.
Luego de crear la cuenta nos muestra un mensaje donde se nos comunica que tenemos que
ingresar a nuestra cuenta de correo para activar nuestra cuenta.
Una vez dentro del correo vamos a encontrar el Codigo de activacion y el link que nos lleva a la
ventana de Activacin de Cuenta, es alli donde tenemos que completar los datos solicitados.
Configurar cuenta
Vamos a comenzar configurando las opciones personales asociadas a nuestra cuenta, para ello nos
vamos en la pestaa Account.
Este proceso de creacin cuenta con tres pasos, en el primero tenemos que elegir el Ttulo y el
Nombre del repositorio, donde el nombre tiene que estar en minsculas y sin espacios.
En el paso dos tenemos que establecer las opciones de importacion de datos, podemos crear el
repositorio desde cero o podemos seleccionar la creacin de los directorios trunk, branch y tags,
para nuestro ejemplo vamos a elegir la segunda opcion.
En el paso tres si todo va bien podemos observar la creacin del nuevo repositrio, donde tenemos
que confirmar su creacin.
Esto nos lleva a la pestaa Repositories donde ahora podemos observar el nuevo repositorio
creado
Ahora seleccionamos el nombre del repositorio, esto nos lleva a la pestaa Activity, donde
podemos observar la URL para nuestro Subversion, la creacin de la estructura del repositorio y el
Repository Team para administrar los miembros del equipo.
Al seleccionar la revision 1 podemos observar los detalles sobre los cambios que se producen en el
repositorio.
La primera es introducir el Nombre de usuario a agregar, luego hacemos clic en el boton Search.
En el paso dos tenemos que seleccionar el nombre de usuario y elegimos el botn Next step.
En el tercer paso tenemos que seleccionar el nombre del repositorio y los permisos de acceso,
luego agregamos el usuario con Add User.
Es aqu donde nosotros podemos eliminar al nuevo usuario o tambin podemos editar para
cambiar los permisos otorgados a un miembro del equipo, tambin se podemos establecer
permisos para cada uno de los repositorios.
TortoiseSVN
Bien para poder trabajar desde Netbean utilizando Subversion primero necesitamos instalar en
local el software Subversion, para ello nos vamos a la pagina TortoiseSVN
https://tortoisesvn.net/downloads.html
Tambin en esta ventana podemos agregar ciertas variables como revisin y configurar otras
opciones.
Seleccionamos el boton Instalar, esto nos lleva a la ventana Intalador de Netbeans donde tenemos
que Aceptar los terminos de la licencia, esta instalacin dependiendo de nuestra conexin puede
tardar un poco, lugo al finalizar la instalacin tenemos que reiniciar el IDE para que nos tome los
cambios.
Esto nos lleva a la ventana de Import donde tenemos que pegar en Repository URL la url que nos
gener en el riouxsvn, la direccin que le tenemos que pasar debe ser de la siguiente forma
https://svn.riouxsvn.com/trunk/nombre del proyecto, en User se coloca el nombre de usuario y en
Password el password creado en el riouxsvn. Si estamos trabajando dentro de una red es muy
importante completar la Configuracin Proxy y completar los datos de usuario y contrasea de la
red. En esta ventana importar completamos la URL que nos gener riouxsnv que para nuestro
ejemplo es https://svn.riouxsvn.com/pl-svn
En el siguiente paso completamos la ruta que nos falta trunk/nombre del proyecto.
Presionamos el botn Siguiente para pasar al siguiente paso, all podemos observar el nombre del
Repositorio de carpeta donde se observa el nombre del proyecto.
Este proceso puede tardar algunos minutos dependiendo del tamao del proyecto.
Prof. Lic. Miguel Angel Recalde Pgina 21
Ingeniera del Software II Gua Subversion con Netbeans.
En este punto aparece la lista de todos los archivos que vamos a importar o a commitar al servidor
de RiouxSVN, presionamos el botn Terminar.
Dentro del proyecto en riouxSVN podemos observar en la pestaa Activity en la opcin Activity
Stream la revisin 3 de nuestro proyecto.
Ahora podemos observar nuestro mensaje y una lista de los cambios hechos en el archivo.
Figura 30: Vista del mensaje y los cambios realizados a los archivos.
Rojo ( ) Indica lneas que han sido eliminados desde la revisin anterior.
Ahora el IDE nos muestra que hay nuevas lneas de cdigos o que la fuente ha sido cambiada,
ahora nos vamos a la pestaa Proyectos y vemos unos pequeos iconos cilndricos de color azul,
esto nos indica que este cdigo no est actualizado con el servidor de RiouxSVN.
Marca proyectos, carpetas o paquetes que contengan archivos en conflicto (es decir,
las versiones locales que entran en conflicto con las versiones que se mantienen en el
Red Badge ( ) repositorio). Para los paquetes, esta placa se aplica nicamente a la caja en s y no a
sus sub-paquetes. Para los proyectos o carpetas, el smbolo de identificacin indica
conflictos dentro de ese elemento, o cualquiera de las subcarpetas contenidas.
El cdigo de colores se aplica a los nombres de archivo con el fin de indicar su estado actual en el repositorio:
Color Ejemplo Descripcin
Figura 32: Vista de pestaa proyectos donde se observan cambios al archivo modificado desde Netbeans.
Ahora esto nos lleva a la ventana de Commit, ac es muy importante completar el Commit
Message.
Figura 35: Ventana Commit - Completar el Commit mensaje y seleccin de archivo a confirmar.
Ahora podemos ver en nuestro IDE que ya no nos marca en Paquetes de fuentes el Icono de color
azul.
Ahora nos vamos a nuestro proyecto de RIouxSVN y vemos los cambios, el numero 4 nos indica
que es la revisin 4, tambin nos muestra el comentario que escribimos.
Hacemos clic sobre rev4 y esto nos lleva a la siguiente ventana donde me muestra cual fue el
archivo modificado.
Para abrir la ventana de control de versiones, debemos seleccionar un archivo o una carpeta
versionada (por ejemplo, de los proyectos, archivos) y, o bien optar desde el men por Equipo >
Subversion> Mostrar cambios o hacer clic derecho sobre el archivo y elegimos Subversion >
Mostrar cambios.
Por defecto, la ventana de versiones muestra una lista de todos los archivos modificados dentro
del paquete o carpeta seleccionada. Usando los botones en la barra de herramientas, podemos
optar por mostrar todos los cambios o limitar la lista de los archivos para que nos muestre los
archivos modificados de forma local o remota. Tambin podemos hacer clic en los encabezados de
columna por encima de los archivos de la lista para ordenar los archivos por nombre, estado o
ubicacin.
Operaciones permitidas
Con la ventana de versiones, hacemos clic en el botn Actualizar estado.
Las operaciones en la ventana de proyectos trabajan slo en los propios proyectos y no son
recursivas. Para mostrar modificaciones en los proyectos anidado / hijo, podemos utilizar la
ventana de Archivos o Favoritos.
Confirmar todo
Permite confirmar los cambios locales en el repositorio.
Commit all
Mostrar anotaciones:
Buscar Historial:
Deshacer borrado:
Revertir Modificaciones:
Para crear una rama hacemos click derecho en el nombre de nuestro proyecto, se abre el men,
seleccionamos Subversion-> Copiar a.
Se nos abre una ventana en la que aparece una opcin llamada "Fuente", seleccionamos "Carpeta
remota" para que haga el branch de la versin que hay en el servidor porque sino lo har de la
versin de nuestro disco duro. Aqui tenemos que asegurarnos de que hemos hecho un commit de
los ltimos cambios si es que los queremos incluir en el nuevo branch.
Si queremos podemos seleccionar la opcin "Cambiar a copia" y nuestro proyecto en local estar
apuntando al nuevo branch.
Al realizar un Comparar (diff), una grfica de Visor de diferencias se abre para el archivo
seleccionado (s) y revisiones en la ventana principal del IDE. El visor de diferencias muestra dos
copias en los paneles de lado a lado. La copia ms actual aparece en el lado derecho, por lo que si
usted est comparando una revisin de repositorio en contra de su copia de trabajo, la copia de
trabajo se muestra en el panel derecho:
Figura 42: Vista de las diferencias que existen entre las copias.
El visor de diferencias hace uso de la misma codificacin de color utilizado en otro lugar para
mostrar los cambios de control de versiones. En la captura de pantalla que se muestra arriba, el
bloque verde indica el contenido que ha sido aadido a la revisin ms actual. El bloque rojo indica
que el contenido de la revisin anterior se ha eliminado de la anterior. El color azul indica que los
cambios se han producido dentro de la lnea (s) resaltado.
Navegar por las diferencias entre los archivos Anterior ( ): Va a diferencia anterior se
comparados muestra en el diff
Si nuestro compara (diff) contiene varias
diferencias, se podemos navegar entre ellos Siguiente ( ): Va a la siguiente diferencia
mediante el uso de los iconos de las flechas que que aparece en el diff.
aparecen en la barra de herramientas. Los
iconos de flecha nos permiten ver las
diferencias tal como aparecen de arriba a
abajo:
Podemos incluso combinar un rango de revisiones a partir de dos carpetas separadas del
repositorio.
El siguiente escenario describe un caso de uso comn: Ha desprotegido la versin trunk en una
carpeta con el nombre ejemploJUnitJdoc , y ahora quiere fusionar su copia con una rama
(branch). Para fines demostrativos, nuestro diseo del repositorio contiene una carpeta branches
utilizada para contener todos los archivos ramificados:
1. En Proyectos, Archivos o en la ventana, hacemos clic en los archivos o carpetas en las que
deseamos realizar la operacin de combinacin (Merge) y seleccione Subversion>
Combinar cambios. El cuadro de dilogo Combinar cambios (Merge).
4. Hacemos clic en Combinar (Merge). El IDE incorpora las diferencias encontradas entre las
revisiones de rama y su copia local del archivo. Si se producen conflictos de fusin, el estado del
archivo se actualiza al conflicto de fusin para indicar esto.
Nota: Despus de la fusin de las revisiones a nuestra copia de trabajo local, an tenemos que
confirmar los cambios utilizando el orden Confirmar (commit) con el fin de que sean aadidos al
repositorio.
Para llevar a cabo una actualizacin de todos los archivos de origen, podemos hacer clic en el
icono Actualizar todo ( ), Que muestra en las barras de herramientas situadas en la parte
superior tanto de la ventana de versiones, as como el visor de diferencias . Cualquier cambio que
pueda haber ocurrido en el repositorio se muestra en la ventana de salida de versiones.
Los conflictos que surgen se deben resolver antes de Commit archivos al repositorio. Podemos
resolver conflictos en el IDE utilizando el (Merge) Combinar conflictos . El Resolver los conflictos
de fusin proporciona una interfaz intuitiva que nos permite abordar los conflictos individuales
secuencialmente mientras se visualiza la salida resultante de la fusin cuando realizamos cambios.
Podemos acceder a la Resolver los conflictos de fusin en un archivo que est en conflicto
haciendo clic derecho en el archivo y elegir la Subversin> Resolver los conflictos.
El Resolver los conflictos de fusin muestra las dos revisiones en conflicto de lado a lado en el
panel superior, con las reas en conflicto resaltados. El panel inferior muestra el archivo tal como
aparece mientras se funde para los conflictos individuales entre las dos revisiones se producen.
Resolucin de conflictos
Al realizar una actualizacin o una confirmacin, el apoyo subversin de la IDE se compara con los
archivos de fuentes de repositorio para asegurarse de que otros cambios no han ocurrido ya en los
mismos lugares. Cuando el proceso checkout previo (o actualizacin) ya no coincide con el HEAD
del repositorio (la revisin ms actual), y los cambios que se aplican en nuestra copia local de
trabajo coinciden con reas en el HEAD, que tambin han cambiado, nuestro Actualizar (Update) o
confirmar (Commit ) resulta en un conflicto.
Como se indica en distintivos y Codificacin de colores, los conflictos se muestran en el IDE con el
texto rojo y se acompaan de una insignia roja. Cuando se ve en los proyectos, archivos o
ventanas. Cuando se trabaja en la ventana de control de versiones, los conflictos tambin son
indicados por el estado de un archivo.
Ahora nos muestra la ventana de Verificar (Checkout) donde hay que seguir varios pasos
En Repository URL: tienen que pegar la url que les pas el compaero.
Esto nos lleva a al segundo paso de la ventana Checkout donde tenemos que elegir el Repository
Folder, lo vamos a buscar y para ello seleccionamos Importar. Esto nos lleva a la ventana de
Examinar carpetas del repositorio, luego seleccionamos Aceptar.
Figura 48: Vista del proyecto seleccionado desde la carpeta del repositorio.
Para el ejemplo no usaremos la revisin 4 sino que pondremos directamente HEAD para poder
tener la ltima versin.
Seleccionamos Omitir trunk y revisar solo su contenido, podrimos por ejemplo presionar el
botn Examinar y lo bajamos en escritorio, tambin seleccionamos Escanear en busca de
proyectos de NetBeans despus de la revisin, por ultimo presionamos el botn Terminar.
Una vez terminado la el Checkout aparece una ventana donde nos muestra la cantidad de
proyectos verificados y nos pregunta si queremos abrir el proyecto que se encontr, entonces
presionamos el botn Abrir Proyecto.
Es en esta ventana donde elegimos el nombre de nuestro proyecto y finalmente elegimos el botn
Abrir.
Es as de fcil traer a Netbeans el cdigo del compaero, ahora podemos ejecutar el proyecto sin
ningn problema.
Algo que tener en cuenta ac es que si hacemos cambios en el cdigo, esos cambios solo van a ser
local porque nosotros bajamos el archivo de forma annima y no lo vamos a poder enviar como lo
hicimos antes.
Bibliografa.
-Daniel Bolaos Alonso; Almudena Sierra Alonso; Miren Idoia Alarcn Rodrguez.: Pruebas de
software y junit, Pearson Prentice Hall - 2007, Cap. 4 y 5.
2006. http://svnbook.red-bean.com/nightly/en/svn-book.pdf
-Kng, S., Onken, L. y Large, S.: TortoiseSVN. Un cliente de Subversion para Windows,
-http://gerardobarcia.com/blog/?p=6
-https://riouxsvn.com/
Sobre el material.
Todos los datos utilizados para la creacin del repositorio son ficticios y con fines ilustrativos
acadmicos nicamente. De ninguna manera se pretende que este documento sea una plantilla
final.