Diario de un indeciso... o no

Powered by Blogger
Atom Feed
Licencia Creative Commons
Sin religión
Hacker Cómo
XHTML 1.0
CSS
Se ve mejor con cualquier navegador




lunes, agosto 20, 2007

Cómo usar Subversion en Eclipse

Eclipse trae integrado CVS como sistema de control de versiones porque tradicionalmente ha sido uno de los sistemas más populares. No obstante, las ventajas de Subversion frente a CVS hacen de SVN una alternativa cada vez más usada.

Eclipse ofrece una interfaz bastante buena para trabajar con proyectos remotos colaborativos mediante cvs, y aunque no incorpore svn de fábrica, era de esperar que gracias a su fortísima orientación a frameworks haya extensiones que ofrezcan la misma funcionalidad para svn. En concreto Tigris.org, la misma comunidad que desarrolla svn, también mantiene Subclipse, un plugin que integra svn en Eclipse.

Instalación de Subclipse

Para instalar Subclipse accede al Panel de actualizaciones: "menú Help -> Software updates -> Find and install":

Eclipse update manager

Selecciona "Search for new features to install" y pulsa "Next". Aparecerá:

Eclipse update manager

Desmarca todas las casillas, como en la imagen anterior. A continuación pulsa "New Remote Site" e introduce los datos de la web de Subclipse:

Pulsa "OK" para volver a la pantalla anterior y una vez allí pulsa "Finish".

A continuación es posible que si marcas directamente la casilla "Subclipse" te aparezcan errores:

Eclipse update manager

Estos errores se deben a que la instalación de algunos paquetes de Subclipse dependen de otros plugins que no están instalados. No obstante, Subclipse se divide en dos partes: el plugin en sí y una parte opcional (Integrations), que es la que tiene esas dependencias. Si despliegas la casilla Subclipse podrás desmarcar la parte opcional (Integrations) y el error desaparece. Para la mayoría de usuarios la parte opcional es prescindible y el plugin ofrece toda la funcionalidad de svn. De hecho, si los paquetes opcionales te suenan a chino, significa que no los necesitas y puedes desmarcarlos tranquilamente:

Eclipse update manager

Pulsa "Next" y a continuación acepta la licencia de Subclipse y vuelve a pulsar "Next". Se muestra en un listado lo que vas a instalar. Pulsa "Finish" para que comience la descarga del plugin. Eclipse te informará más tarde de que el paquete no está firmado digitalmente. Esto carece de importancia porque Tigris.org es una comunidad de desarrolladores de la que te puedes fiar. Pulsa en "Install all" y se instalará el plugin. Una vez instalado, Eclipse te preguntará si quieres reiniciar el programa o aplicar los cambios sin reiniciar. Pulsa sobre "Yes" para reiniciar el programa y no tener problemas al usar el plugin.

Importar un proyecto svn existente

Ahora ya puedes usar el repositorio svn como un proyecto nativo de Eclipse. Accede a "menú File -> Import" y dentro de la categoría "Other" elige "Checkout Projects from SVN":

Eclipse import window

Pulsa "Next". Eclipse te pedirá la URL del repositorio svn. Introduce la dirección del repositorio que alberga el proyecto que quieres importar y pulsa "Next". A continuación te pedirá tu nombre de usuario y tu contraseña si fuese necesario. Puedes marcar "Save password" para que Eclipse recuerde tu contraseña (es lo más cómodo porque de lo contrario te la pedirá constantemente). Si no tienes un repositorio configurado y quieres experimentar con Subclipse, puedes usar la URL pública https://multiblock.svn.sourceforge.net/svnroot/multiblock

Puedes desplegar los directorios para elegir la carpeta del svn que contiene tu proyecto:

Eclipse checkout svn

Elige el directorio y pulsa "Finish".

Solo queda elegir qué tipo de proyecto vas a importar (Java, C++, php...). Elige C/C++ si estás usando el repositorio público que mencioné anteriormente (aunque esta opción solo estará disponible si tienes instalado el paquete CDT). Pulsa "Next" y dale un nombre al proyecto. Vuelve a pulsar "Next" y luego "Finish".

Antes de descargar los ficheros del repositorio svn al directorio local, es posible que el plugin te avise de que en la copia local existen más ficheros aparte del fichero .project (un fichero estándar que Eclipse incluye en sus proyectos) y que si en el repositorio existieran ficheros con los mismos nombres, los ficheros del repositorio reemplazarían a los del directorio local. Este mensaje no tiene importancia porque es muy improbable que tengas ficheros con esos nombres en tu repositorio (son ficheros .* que almacenan información específica del proyecto, como el .cache para proyectos php o el .cproject para proyectos C/C++). Puedes pulsar "OK" tranquilamente.

Añadir un proyecto de Eclipse al svn

En vez de importar a Eclipse un proyecto desde un repositorio svn, también puedes hacer lo contrario: crear un proyecto en un repositorio svn desde un proyecto local de Eclipse. Pulsa en la lista de proyectos con el botón derecho en el nombre del proyecto que quieras exportar y elige "Team -> Share project".

Compartiendo un proyecto local

Elige SVN como tipo de repositorio y sigue los mismos pasos de la sección anterior para especificar un repositorio. A continuación Eclipse te pedirá que elijas los ficheros del proyecto que quieres subir y creará un directorio en el repositorio con el mismo nombre que el proyecto local. Ahí subirá los ficheros que le hayas indicado.

Interfaz hacia SVN

Una vez que ya tengas una copia local de tu proyecto vinculada a un repositorio, el manejo de svn es directo (especialmente si ya tienes experiencia con svn u otro sistema similar). Se trabaja con los ficheros del proyecto en local hasta que quieras hacer un update para actualizar tu copia local o un commit para subir los cambios. Para ejecutar una de estas acciones pulsa con el botón derecho del ratón sobre el fichero o conjunto de ficheros (seleccionando con Control-clic) en los que quieres ejecutar la operación; elige "Team -> Update" o "Team -> commit". También puedes ejecutar esta acción sobre todo el proyecto haciendo clic derecho sobre el nombre del proyecto.

Si haces un commit de todo el proyecto entero, Eclipse te mostrará una ventana con una lista de todos los cambios que van a efectuarse y un área de texto para que escribas un mensaje descriptivo que se guardará en el historial (el equivalente a la opción -m de consola). Recuerda que a diferencia de cvs los cambios en svn son atómicos, por lo que si en un único commit incluyes múltiples cambios en múltiples ficheros, constarán como una única revisión. Si en el futuro quisieras revertir una modificación realizada en uno de los ficheros, no podrías hacerlo sin revertir también todos los demás ficheros que modificaste en esa misma revisión. Por ese motivo, si has hecho cambios en varios ficheros de la copia local pero conjuntamente no tienen sentido como una única modificación lógica, es preferible hacer varios commits por separado. De esa manera luego podrás revertir los cambios también separadamente.

Puedes añadir un fichero o un directorio nuevo al repositorio creándolo en el proyecto local como lo harías normalmente, luego haz clic derecho sobre él y elige "Team -> Add to Version Control". Se creará en el repositorio cuando hagas commit. Por el contrario si eliges "Team -> Add to svn:ignore", se abrirá una ventana en la que podrás especificar que ese fichero (o todos los que cumplan un determinado patrón) sean exclusivos de la copia local y no se tengan en cuenta a la hora de trabajar con svn.

Para borrar un fichero haz clic derecho y elige "Delete". Cuando hagas el siguiente commit el fichero se borrará del repositorio (salvo que desmarques la acción de borrado en la ventana del commit).

La operación de renombrar aún no está implementada en la versión actual de svn. Al renombrar un fichero lo que en realidad se hace es copiarlo a otro fichero con el nuevo nombre y borrar el fichero antiguo. El nuevo fichero hereda todo el historial de modificaciones del fichero borrado, por lo que es posible revertirlo a un estado previo y para el usuario todo es transparente como si realmente se hubiese renombrado el fichero. No obstante, al hacer commit puedes ver en la lista de cambios que en realidad se están haciendo dos operaciones: una copia y un borrado.

Para revertir los cambios de un fichero y recuperar la versión que hay en el repositorio (descartando los cambios locales), elige "Team -> Revert". Si lo que quieres es recuperar una revisión específica del repositorio elige "Team -> Show history" y en la solapa "History" (en el fondo de la ventana) haz clic derecho sobre la revisión específica que quieres revertir y elige "Revert changes from this Revision".

Por último, para los idólatras del teclado como yo, que prefieren no usar el ratón si hay atajos de teclado más rápidos y productivos, se puede activar un menú en la barra de menús con las operaciones habituales de SVN. Para activarlo haz clic derecho en la barra de herramientas de Eclipse y elige "Customize perspective". En la solapa "Commands" de la ventana que se abre, activa la casilla "SVN" en "Available commands groups" y pulsa aceptar. El menú aparece solo en la perspectiva para la que lo has activado. Si quieres verlo en otras perspectivas, tendrás que activarlo individualmente en cada una de ellas.

Básicamente esto es todo lo que necesitas saber para usar svn en tus proyectos de Eclipse. Happy programming!

Etiquetas: , ,