JDeveloper 11g: Instalar, configurar y trabajar con Subversion.

Por Rafael Hernández Lluch
Publicado en abril 2012

En cualquier proyecto de desarrollo de software, los cambios en los componentes son continuos y tanto, si el desarrollo lo realiza una sola persona como si se trata de un equipo de trabajo, donde intervienen múltiples desarrolladores, el control de esos cambios es necesario. En estos casos es vital el uso de un sistema de control de versiones para el seguimiento y gestión de los cambios.

Una herramienta de gestión de versionado nos permitirá controlar el avance de nuestros desarrollos, bloquear componentes compartidos y recuperar versiones de nuestro proyecto, entre otras funcionalidades.

Una de las herramientas más extendidas en la actualidad en la gestión de versionado es Subversion y Jdeveloper incorpora la integración con la misma.

El objetivo de este artículo es explicar como instalar y configurar Subversion para su utilización desde JDeveloper 11g y dar una introducción del uso de las operaciones básicas.

Instalación de Subversion

En primer lugar explicaremos como realizar una instalación básica de Subversion.

Podemos descargar la herramienta en http://subversion.apache.org/ donde localizaremos la versión de Subversion acorde a nuestro sistema operativo.

Para este artículo, y por simplicidad, tomaremos la versión de Windows de http://subversion.apache.org/packages.html#windows

La instalación de Subversion para Windows es sencilla, solo tenemos que seguir un simple asistente en el que indicar la localización donde se instalará la herramienta.

instalación Subversion

Una vez instalado Subversion, hay que crear el repositorio donde guardaremos nuestros proyectos.

Existen múltiples opciones para la creación de repositorios, desde la creación por línea de comando como utilizando herramientas cliente como son TortoiseSVN o RapidSVN entre otras.

En nuestro caso utilizaremos una herramienta cliente de Subversion ampliamente extendida como es TortoiseSVN que podemos obtener en http://tortoisesvn.net/downloads.html.

Nota: hay que escoger correctamente la versión del Tortoise acorde a la versión de SVN que hemos instalado.

La instalación de TortoiseSVN es igualmente sencilla y solo hay que seguir el asistente, por lo que no se profundiza en este artículo.

Una vez instalado TortoiseSVN procedemos a crear nuestro repositorio. Para ello, nos situamos con el explorador de archivos en el directorio elegido y pulsamos botón derecho seleccionado la opción TortoiseSVN –> Create repositoy here.

TortoiseSVN

Según la versión de TortoiseSVN elegida puede proponernos la creación de la estructura de carpetas habituales en el modelo de trabajo de Subversion (trunk/branches/tags).

creación de la estructura de carpetas

Llegados a este punto disponemos de Subversion instalado y tenemos configurado un repositorio al que vamos a conectar JDeveloper para comenzar a trabajar.

Conectar JDeveloper con repositorio de Subversion

A continuación configuraremos JDeveloper para que utilice el repositorio de Subversion creado para el almacenamiento de nuestras aplicaciones.

Para ello, seleccionaremos la opción Versioning –> Version Application.

Versioning - Version Application

Elegimos la opción de “Creación manual de conexión a Subversion” como se nos propone en la siguiente ventana.

Creación manual de conexión a Subversion

JDeveloper no muestra la siguiente ventana en la que tendremos que indicar la información necesaria para la conexión con nuestro repositorio.

indicar la información necesaria para la conexión

Repository URL: indicamos la ruta del repositorio que hemos creado. En el ejemplo que estamos construyendo, la ruta creada con TortoiseSVN en C:\Laboratorio\Mis Proyectos\Repositorios.
Como se nos indica en la ventana debemos indicar la ruta con “/” y no con “\”, además del protocolo de acceso (file, http, https,…) En el ejemplo que estamos construyendo al tratarse de un repositorio local el protocolo será “file”: “file:///c:/laboratorio/mis proyectos/repositorio”

Connection Name: indicamos el nombre con el que identificaremos nuestro repositorio.

Para repositorios protegidos en los que se requiera validación se indicará:
Username: nombre de usuario de acceso al repositorio.
Password: clave de acceso del usuario.

Nota. En nuestro caso no es necesario usuario y clave al tratarse de un repositorio local.

Una vez configurada la conexión, comprobamos que está correcta pulsando el botón “Test Read Access”, si obtenemos como resultado “Access Granted” (como se muestra en la siguiente imagen) ya disponemos de Jdeveloper configurado para empezar a trabajar con Subversion.

create Subversion connection

Llegados a este punto, podemos ver desde JDeveloper el contenido del repositorio con la opción “Versioning Navigator”.

Se puede acceder con View –> Team –> Versioning Navigator

View - Team - Versioning Navigator

Esta opción nos muestra la situación actual del repositorio.

Version Application...

Versionar una aplicación

A partir de este momento estamos en condiciones de incorporar nuestras aplicaciones desarrolladas con JDeveloper en el repositorio de Subversion. Para ello, con nuestra aplicación abierta, en el menú de aplicación procederemos a la importación de la misma al repositorio con la opción “Version Application...”

Version Application...

Esta opción nos muestra un asistente donde lo más importante es el paso “Destination” en el que debemos indicar la conexión de repositorio a utilizar y la ubicación dentro de la estructura del repositorio.

Lo más habitual dentro de una política de versionado es importar nuestra aplicación al directorio “trunk” que es donde se mantiene la línea base de desarrollo.
Los directorios branch y tag tienen otras utilidades como son las de abrir líneas paralelas de desarrollo o el etiquetado de revisiones.

Import to subversion

En el apartado “Source” seleccionaremos el directorio donde se encuentra nuestra aplicación para la realización del import inicial e indicaremos un comentario asociado a está primera operación de versionado.

Import to subversion

El resto de pasos del asistente podemos saltarlos pulsando el botón de Finish para que comience el proceso.

Finalizado el proceso de importación, podemos observar en el navegador de versionado el contenido del repositorio donde aparece nuestra aplicación en la carpeta seleccionada (“trunk” en nuestro ejemplo).

navegador de versionado el contenido del repositorio donde aparece nuestra aplicación

Al mismo tiempo, en el navegador de aplicación podemos observar que los proyectos, carpetas y ficheros van acompañados de unos números que nos indican la revisión de Subversion en la que fueron modificados o añadidos al repositorio.
Tras el import inicial todos los elementos que forman parte de nuestra aplicación están etiquetados con el mismo número de revisión.

Cuando trabajamos con una aplicación incluida en un repositorio de SVN, JDeveloper nos proporciona un conjunto de operaciones disponibles en el menú “Versioning”.

Disponemos, entre otras, de las opciones de:

• Check out: para descargar la revisión del repositorio al directorio de trabajo.
• Commit: para guardar los cambios realizados en la aplicación en el repositorio como una nueva revisión. Esto garantizará que otros desarrolladores puedan obtener los cambios que hemos realizado.
• Update: que nos actualiza la copia de trabajo de Jdeveloper con la revisión del repositorio. Es conveniente hacer está operación antes de comenzar a trabajar ya que otros desarrolladores pueden haber modificado componentes.
• Add: para incluir nuevos componentes de la aplicación en el repositorio.
• Lock: para bloquear el componente que vamos a modificar y evitar que otro usuario que este trabajando con el mismo repositorio lo pueda alterar.
• Unlock: para liberar componentes bloqueados.
• Branch/Tag: para crear etiquetas o ramas de desarrollo de nuestra aplicación.
• Merge: para fusionar cambios entre distintas revisones.
• Cleaning Working Copy: para sincronizar la copia de trabajo en caso de problemas.

Nota: para profundizar en las opciones de SVN se puede consultar la documentación situada en http://svnbook.red-bean.com/

Versioning

Trabajar con Versionado

A continuación se explican algunas de las operaciones más habituales cuando se trabaja con una herramienta de versionado.

• Añadir un nuevo componente.

Cuando añadimos un componente a nuestra aplicación (en este ejemplo una página JSF), podemos ver, como se muestra en la imagen, que en el navegador de aplicaciones el fichero no tiene número de revisión asignado y si nos situamos sobre el nombre del componente se muestra un mensaje que nos indica “Not versioned”.

Esto significa que el archivo todavía no está en el repositorio de SVN.

Not versioned

Para añadir el componente en el repositorio utilizamos la opción Versioning -> Add que podemos encontrar situándonos sobre el fichero con el botón derecho o en el menú superior. Esta opción nos muestra la siguiente pantalla con la relación de componentes de la aplicación pendientes de añadir.

Add to Subversion

Tras está operación, el fichero queda marcado como añadido en SVN, pero la operación no está completa hasta que no se realice una operación de commit. Podemos ver que el fichero tiene asociado un signo “+” que indica la operación de Add pero que todavía no tiene número de revisión asignado.

.jsf

• Commit de operaciones.

Se trata, quizás, de la operación más importante dentro del versionado ya que guarda los cambios en el repositorio. Está operación se puede realizar a distintos niveles dentro de la aplicación, se puede hacer un commit tanto de un componente como de toda la aplicación, para ello basta con situarse en el nivel deseado y con el botón derecho utilizar la opción Versioning -> Commit.

Siempre es conveniente indicar un comentario a la operación de commit indicando el motivo de la operación. Subversion puede ser configurado para que el comentario de los commits sea obligatorio.

indicar un comentario a la operación de commit

En el ejemplo que estamos siguiendo, podemos observar que tras la operación de commit, en el navegador de aplicaciones, el nuevo fichero tiene asignado un número de revisión.

operación de commit

• Bloqueo de componentes.

El bloqueo de componentes es vital durante el trabajo en equipo ya que nos permite proteger los componentes que vamos a modificar frente al resto de desarrolladores que participan en el proyecto.

Antes de realizar cualquier modificación debemos lanzar la operación de Versioning -> Lock. Es una buena práctica indicar un comentario en el momento del bloqueo. Subversion también puede ser configurado para que el bloqueo sea obligatorio antes de hacer modificaciones.

Versioning - Lock

Tras la realización del bloqueo, se puede observar en el navegador de la aplicación que el componente está marcado con el icono de un candado.

el componente está marcado con el icono de un candado

Si fuese necesario liberar el componente para que otro desarrollador lo pueda modificar se puede emplear la opción Versioning -> Unlock.

• Branch/Tag

Dentro de una buena política de versionado, las operaciones de Branch y Tag nos permiten crear ramas de desarrollo paralelas a la rama Trunk o etiquetado del avance de los desarrollos respectivamente.

Estás operaciones hacen una copia de nuestra aplicación en la revisión indicada sobre el directorio del repositorio que se indique. Habitualmente se utilizan los directorios banch o tags que se construyeron en la generación del repositorio.

Branch/Tag

En la siguiente imagen podemos ver el resultado en el navegador de versiones tras la realización de un tag en el que, como ejemplo, se ha indicado la fecha y hora del mismo como etiqueta. Podemos observar que el contenido es idéntico a la rama trunk desde la que se originó.

Hasta aquí se han comentado algunas de las principales operaciones que nos proporciona el plugin. Para el resto de operaciones es recomendable acudir a la documentación de SVN o de JDeveloper.

Por otra parte, es interesante destacar algunas utilidades que nos proporciona el menú de Versioning. Para poder ver las siguientes funcionalidades, continuando con el ejemplo, se han generado varios cambios y commits en la rama de desarrollo trunk que estamos utilizando.

• Version Tree

Esta opción nos permite ver las revisiones por las que ha pasado cualquier componente y se nos presenta en formato de árbol donde cada nodo muestra el número de revisión.

Version Tree

Desde está opción se pueden realizar comparaciones de revisiones de forma que la herramienta nos muestra las diferencias entre las mismas marcando y señalando las mismas. Desde la comparación existen opciones de localización de diferencias accesibles con el botón derecho del ratón.

Version Tree

• Version History

Esta opción permite ver el historial de revisiones de cualquier componente de nuestras aplicaciones. Nos presenta la información en dos paneles en los que observar cada revisión, la fecha en que se generó la revisión, el autor de la misma y el comentario asociado.

La vista con dos paneles nos permite comparar revisiones y nos proporciona distintas opciones como son: ver todas las revisiones, solo las mías, las de la última semana o las del día.

vista con dos paneles

Este artículo ha pretendido dar a conocer la importancia que tiene el uso de una herramienta de versionado en la gestión de los cambios en proyectos de software ya sea en trabajos individuales en los que las aplicaciones crezcan en funcionalidad, como en proyectos con equipos de trabajo formados por múltiples desarrolladores. Siendo en este segundo caso de gran importancia la protección que proporcionan estas herramientas ante perdidas de código.

Se ha presentado de forma sencilla la integración que proporciona JDeveloper con Subversion siendo recomendable plantear una buena política de versionado antes de empezar a utilizarlo.




Publicado por Rafael Hernández Lluch.