Mostrando entradas con la etiqueta Subversion. Mostrar todas las entradas
Mostrando entradas con la etiqueta Subversion. Mostrar todas las entradas

martes, 6 de octubre de 2009

Hacer un release de un proyecto con Maven

A la hora de hacer un release de un proyecto que estamos gestionando con Maven y Subversion podemos seguir los siguientes pasos:
  • Cambiar la versión en el pom.xml del proyecto y quitar la etiqueta SNAPSHOT.
  • Hacer commit del pom.xml.
  • Etiquetar la versión del código en el repositorio de Subversion.
  • Cambiar la version en el pom.xml para dejar la siguiente versión: 0.0.2-SNAPSHOT.
  • Hacer commit de los pom.xml.

Si además, en vez de sólo uno, tenemos varios proyectos, el trabajo se multiplica.

Para simplificar estas tareas, se puede hacer uso de un plugin de Maven, el Maven Release Plugin. Para ello, primero debemos configurar las propiedades del sistema de control de versiones que estamos usando. Esto se hace en el bloque scm del pom.xml:
<scm>
<url>svn://localhost/trunk/SimpleProject</url>
<developerConnection>
scm:svn:svn://localhost/trunk/SimpleProject
</developerConnection>
</scm>

Ahora, incluimos en el pom.xml del proyecto la configuración para el Maven Release Plugin. Vamos a indicar en que ruta se deben dejar los etiquetas de las releases que realicemos:
<project>

<build>
<plugins>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.0-beta-7</version>
<configuration>
<tagBase>svn://localhost/tags/releases</tagBase>
</configuration>
</plugin>

</plugins>
</build>

</project>

A la hora de hacer la release he experimentado fallos relacionados con el directorio target, puesto que este es un directorio que se elimina cada vez que se hace un clean, lo cual genera conflictos entre las versiones del proyecto en Subversion. Puesto que es un directorio cuyo contenido se genera automáticamente en la fase de construcción del proyecto, no es necesario que lo incluyamos en el sistema de control de versiones. Vamos a indicar en Eclipse que este directorio sea ignorado por Subversion, desde la ventana Preferences:

En este momento, ya se podría hacer una release del proyecto mediante el siguiente comando que se ejecutaría dentro del directorio del proyecto:
mvn -Djorge=jorgepassword release:clean release:prepare

La ejecución de este comando nos preguntará por la versión de la release que estamos realizando, por el nombre de la etiqueta para esta release y por la siguiente versión del proyecto después de esta release. En nuestro caso, dejaremos las opciones por defecto:
What is the release version for 
"Unnamed - com.roldan:SimpleProject:jar:0.0.2-SNAPSHOT"?
(com.roldan:SimpleProject) 0.0.2: :
What is SCM release tag or label for
"Unnamed - com.roldan:SimpleProject:jar:0.0.2-SNAPSHOT"?
(com.roldan:SimpleProject) SimpleProject-0.0.2: :
What is the new development version for
"Unnamed - com.roldan:SimpleProject:jar:0.0.2-SNAPSHOT"?
(com.roldan:SimpleProject) 0.0.3-SNAPSHOT: :

Al finalizar, habremos creado la release del proyecto:

Referencias:
http://maven.apache.org/plugins/maven-release-plugin/index.html
http://weblogs.java.net/blog/2008/08/31/using-maven-release-plugin
http://jmbeas.blogspot.com/2009/03/versionado-automatico-con-maven.html

viernes, 25 de septiembre de 2009

Manejo de ramas en Subversion desde Eclipse

En este artículo vamos a ver cómo trabajar desde Eclipse con las ramas de desarrollo de un proyecto gestionado en Subversion.

Lo primero que vamos a hacer es crear una rama del proyecto, en la cual podríamos desarrollar una nueva característica del proyecto o corregir un error. Para crear esta rama hacemos clic sobre el proyecto con el botón derecho del ratón y vamos a Team -> Branch/Tag:

Para Subversion es lo mismo una rama (branch) que una etiqueta (tag). Una estiqueta es una rama sobre la que no se incluyen cambios. A continuación seleccionamos el directorio remoto donde se almacenará esta rama. Por convencion, todas las ramas se guardan bajo el directorio branches del repositorio:

Seleccionamos la revisión sobre la que se va a crear la rama. Como queremos que se haga sobre la última versión del desarrollo, seleccionamos la opción por defecto (HEAD):

Por último podemos incluir un comentario e indicar que queremos que nuestra copia local del proyecto se cambie a esta rama para poder desarrollar sobre ella:

Tras esto ya se habra creado la rama, con lo que tendremos la siguiente estructura en nuestro repositorio:

Además, la copia local sobre la que estamos trabajando desde Eclipse habrá pasado a ser la de la rama. Cualquier modificación que hagaos y subamos al repositorio no afectará al trunk del proyecto, sino que solo afectará a dicha rama.

Ahora haremos todas las modificaciones que queramos sobre dicha rama ya las subiremos al repositorio haciendo Commit. Periódicamente deberemos actualizar dicha rama con los posibles cambio que haya podido haber en el trunk, para que nuestra copia no se desvíe del desarrollo principal. Para esto deberemos hacer merges del trunk sobre nuestra rama, haciendo clic con el botón derecho del ratón y yendo a Team -> Merge:

Seleccionamos el tipo de merge que vamos a realizar. Como lo que queremos hacer es actualizar una rama con las modificaciones del trunk, elegimos la primera opción, Merge a range of versions:

Si la copia local no está actualizada saldrá un mensaje para que hagamos un Update. A continuación, elegimos desde donde nos queremos actualizar, que, como hemos dicho, será el trunk:

Hacemos Finish en la siguiente pantalla con las opciones que aparecen por defecto, para que me avise de los posibles conflictos que aparezcan en el merge y me deje decidir:

Si se han hecho cambios en el trunk mientras nosotros trabajabamos en nuestra rama, aparecerán conflictos. La pantalla siguiente nos avisa de que hay un conflicto en una clase que debemos resolver, para lo que se lanzará un editor gráfico:

El editor nos permitirá corregir manualmente los confictos en esta clase:

Una vez corregidos los conflicto, salvamos el fichero y lo cerramos. Aparece la siguiente pantalla:

Indicamos que ya hemos resuelto los conflictos y finalizará el merge:

Cuando hayamos finalizado de trabajar con esta rama habrá que reintegrarla en el trunk haciendo un merge de forma similar. En primer lugar cambiamos la copia local por una vista del trunk:


Después hacemos un merge con la opción Reintegrate a branch:

Seleccionamos la rama que queremos reintegrar:

El resto del proceso es similar a lo anteriormente visto.

Hemos visto cómo trabajar con una rama en paralelo a la línea principal del desarrollo manteniendo la sincronía con ésta y cómo reintegrar esta rama con todos sus cambios a la línea principal.

jueves, 24 de septiembre de 2009

Manejo de Subversion desde Eclipse

En este artículo vamos a ver cómo trabajar con Subversion desde Eclipse. Para ello lo primero es instalar en Eclipse el plugin Subclipse, que podemos obtener de http://subclipse.tigris.org/update_1.6.x:

Una vez instalado este plugin, ya podemos gestionar nuestros proyectos en Subversion desde Eclipse. Lo primero que vamos a hacer es conectar a nuestro repositorio desde la vista SVN Repositories, haciendo New -> Repository Location:

Podemos conectarnos al repositorio en la pantalla siguiente a través de cualquiera de la URL svn://localhost:

A continuación se nos pedrirá el usuario y el password:

Con esto ya habremos configurado nuestro repositorio de Subversion en Eclipse. A continuación crearemos la estructura de directorios en el repositorio, creando los siguientes directorio mediante New -> New remote folder:
  • trunk: Este directorio guardará la línea principal de desarrollo del proyecto.
  • branches: Este directorio guardará las distintas ramas de desarrollo del proyecto.
  • tags: Este directorio guardará marcas asociadas al estado del proyecto en un determinado momento.

Una vez hecha la conexión al repositorio y creada la estructura de éste, vamos a crear un proyecto en Eclipse y subirlo al repositorio. Tras crear un proyecto Java con una clase de prueba, hacemos clic con el botón derecho sobre el proyecto y vamos a Team -> Share project:

Elegimos SVN como el tipo de repositorio:

Indicamos que vamos a utilizar un repositorio ya existente:

Y especificamos la carpeta del repositorio donde se guardará el proyecto:

A continuación podemos introducir un comentario si queremos. Cuando pulsamo Finish nos vamos a la vista de sincronización donde se pueden ver las diferencias entre los archivos que hay en el repositorio y los que tenemos nosotros. Haciendo clic sobre el proyecto con el botón derecho del ratón y pulsando Commit subiremos todos los archivos del proyecto al repositorio:

Tras esto, el proyecto estará incluido en el repositorio y podremos empezar a trabajar en equipo.

Instalación de un servidor de Subversion en Windows

Subversion es un sistema de control de versiones libre y de código abierto desarrollado para subsanar las deficiencias de otro sistema anterior, CVS. Subversion es un sistema genérico de control de versiones que gestiona ficheros y directorios y los cambios hechos sobre ellos a lo largo del tiempo. Esto permite recuperar versiones antiguas de estos ficheros y examinar cómo han cambiado los datos.

A continuación se expone cómo instalar un servidor de Subversion en Windows. Este artículo es una adaptación del siguiente artículo, que a mí me ha sido de gran utilidad:

http://www.jayson.in/programming/eclipse-subversion-and-subclipse-installationintegration-on-windows.html


En primer lugar, descargamos la última versión del servidor de Subversion de Collabnet (en este momento se trata de la versión 1.6.5) de la siguiente URL:
http://www.collab.net/downloads/subversion/

Ejecutamos el instalable descargado y vamos avanzando por las pantallas de configuración que se presentan aceptando las opciones por defecto hasta llegar a la siguiente:

Elegimos el directorio donde queremos que se cree el repositorio. De momento, dejaremos el que aparece por defecto y avanzamos a la siguiente pantalla:

Para evitar posibles conflictos con otros programas, cambiamos el puerto del servidor Apache de Subversion de 80 a 81.

Tras esto, continuamos con la instalación hasta finalizar. Cuando haya terminado el asistente de instalación, comprobamos que el servidor de Subversion está levantado yendo a Panel de Control -> Herramientas Administrativas -> Servicios:

Intentaremos iniciar el servicio. Si aparece algún problema, debemos copiar todos los .dll de la carpeta C:\Archivos de programa\CollabNet Subversion Server en las carpetas C:\ Archivos de programa \CollabNet Subversion Server\httpd\bin y C:\ Archivos de programa \CollabNet Subversion Server\httpd\modules. Ahora ya se debería poder iniciar el servidor sin problemas. Una vez iniciado, probaremos que el servidor funciona abriendo la URL http://localhost:81:

También deberemos arrancar el servicio Collabnet Subversion svnserve para poder conectarnos al repositorio a través del protocolo svn, propio de Subversion.

A pesar de que hemos espeificado en la configuración el fichero donde se creará el repositorio, éste no se encuentra configurado correctamente. Para configurarlo deberemos teclear en la línea de comandos:
svnadmin create “C:\svn_repository”

Tras esto se habrá creado en este directorio una estructura de ficheros. En el directorio conf podemos encontrar los archivos svnserve.conf y passwd, que nos sirven para configurar el acceso al servidor de Subversion.

En el archivo svnserve.conf debemos introducir las propiedades:
anon-access=none
auth-access=write
password-db=passwd

En el archivo passwd introduciremos los usuarios y sus passwords, por ejemplo:
jorge=jorgepassword

Tras esto ya tendremos un servidor de Subversion configurado con el que empezar a trabajar.