Integración del control de versiones en entornos de desarrollo

Instalando EGit

En Eclipse las funcionalidades de GIT se basan en el módulo EGit, que viene incorporado en la instalación a partir de Eclipse Juno. En el caso de que se use una versión más antigua, habría que instalarlo como un plugin externo.

Pasa saber si tenemos EGit funcionando en nuestro entorno de desarrollo podemos abrir las preferencias y ver si está integrado en la instalación actual.

Panel de preferencias de Eclipse.

 

En caso de no tener instalado EGit en nuestra versión de Eclipse podemos instalarlo a través del Marketplace.

EGit en el Marketplace de Eclipse.

Inicializar un repositorio

Con EGit el manejo de versiones se realiza muy fácilmente. Lo primero que tenemos que hacer es inicializar el repositorio. Para ello, sobre el proyecto que queremos versionar, hacemos clic derecho y buscamos en el menú contextual la opción Team, y luego Share Proyect.

Inicialización de un repositorio.

Al crear un repositorio Eclipse necesita saber dónde ubicaremos los archivos. Recordemos del apartado anterior que en la terminal con el comando git init creamos el repositorio en la carpeta en la que estemos situados.

En este caso no es diferente, al darle al botón create Eclipse nos preguntará dónde situar estos archivos. En nuestro caso lo mejor es hacerlo en la misma carpeta del workspace del proyecto.

 

Creando un nuevo repositorio.

Una vez hemos configurado nuestro repositorio indicando dónde se ubicará, pulsamos el botón Finish y ya tendremos nuestro proyecto versionado con GIT.

Configuración del repositorio GIT con Eclipse.

Realizar un commit

Podemos ir «marcando» los archivos que queremos que se actualicen en nuestra nueva versión (git add…). En el caso de Eclipse el procedimiento es similar, aunque siempre tenemos la opción de ir añadiendo los archivos poco a poco, según los vamos modificando, o seleccionarlos al realizar el commit.

Si lo que deseamos es ir añadiendo archivos al índice sin realizar el commit nos vamos al menú Team y buscamos Add to index.

Add to index.

Una vez añadidos los archivos para crear la nueva versión le damos a commit en el menú Team para proceder al guardado.

Realizando el commit.

 

Cambiar entre versiones

La finalidad de un control de versiones es poder recuperar nuestro trabajo en diferentes estados temporales. Según vamos realizando commits nuestro código se guarda en el estado que tenía en una medida temporal.

Pero nada de esto tendría sentido si no tenemos un sistema para cambiar entre versión y versión. Para ello solo tenemos que pulsar en el menú la opción Replace with. En este menú encontramos opciones para ir a la versión anterior, al índice, o si pulsamos en commit nos mostrará el historial de versiones que hemos ido creando.

Cambio de versión.

Debemos tener en cuenta que, si cambiamos a una versión anterior sin crear una rama, los estados posteriores a la versión recuperada se perderán.

Comparar archivos

Otra de las grandes ventajas de la utilización del control de versiones es poder controlar los cambios que se han ido realizando.

Ya sean cambios que nosotros hiciésemos en el pasado y queramos revisarlos, o si se trata de un equipo de trabajo y deseamos ver las modificaciones que ha realizado otro miembro del grupo, para localizar estos cambios y compararlos con la versión actual podemos ir al menú contextual a través de Compare With.

En este menú podemos compararlo con el index, la versión anterior o con un commit específico.

Una vez abierta la ventana, solo tenemos que abrir el archivo que queremos comparar y EGit  nos marcará los cambios, mostrándonos el estado actual y el anterior.

 

Comparación de versiones.

Importar un repositorio

 

En muchas ocasiones deseamos importar un proyecto ya existente, ya sea porque necesitamos recuperar un trabajo anterior o porque partimos de una aplicación ya existente.

Para poder clonar o importar un repositorio externo seleccionaremos File / Import / Projects from GIT en la opción File del menú principal.

Ventana de opciones de importación en Eclipse.

El siguiente paso es seleccionar el origen de nuestro repositorio. Este puede encontrarse en local, por lo que solo tendremos que escoger de una lista el repositorio que deseamos. O de forma remota.

Selección de ubicación de nuestro repositorio.

 

En el caso de encontrarse en un repositorio remoto tendremos que indicar los datos de conexión, que variarán según el caso.

A continuación se describen las opciones que debemos tener en cuenta para realizar nuestra conexión:

  • URI: Dirección donde se encuentra nuestro repositorio en la red.
  • Repository path: Ruta dentro del repositorio.
  • Host: Nombre del servidor de repositorios.
  • Protocol: El protocolo usado para la conexión (HTTP o SSH).
  • Port: Puerto abierto en el servidor.
  • User y Password: Nombre y contraseña de usuario.

Subir un repositorio a GitHub

El primer paso para poder trabajar con GitHub es creándonos una cuenta. Este servicio es gratuito siempre que nuestros códigos sean públicos, dejándonos tener proyectos privados de forma limitada.

La cuenta la crearemos en su página de inicio, ubicada en  https://github.com/

Tras añadir nuestros datos y crear la cuenta le daremos a crear nuevo repositorio, que será público si la cuenta es gratuita, y público o privado si la cuenta es de pago.

Creación de un repositorio en GitHub.

La siguiente ventana que nos muestra GitHub es la secuencia de comandos que debemos seguir para subir el repositorio desde la terminal. Llegados a este punto ya podríamos realizar la subida mediante la consola, pero veremos cómo realizar esta subida desde Eclipse.

Secuencia de comandos para subir el repositorio desde la terminal.

 

Ahora tenemos que configurar el repositorio en Eclipse. Dependiendo de lo que queramos hacer podemos encontrarnos con dos situaciones.

  • Importar un proyecto que tenemos situado en remoto.
  • Sincronizar un proyecto existente con un repositorio remoto.

En ambos casos debemos configurar la conexión a nuestro repositorio remoto.

Si ya disponemos de un proyecto abierto en Eclipse, en el menú Team pulsa en Configure  Push en el apartado Remote.

 

Configurar un repositorio remoto para un proyecto existente.

Por el contrario, si queremos que nos cree un nuevo proyecto con la importación, le damos a Import en el menú File.

Importar repositorio.

 

En ambos casos Eclipse nos muestra la ventana de configuración, donde introducimos los datos de nuestro repositorio en GitHub.

Ventana de configuración de repositorio remoto GitHub.

En los siguientes pasos Eclipse nos preguntará dónde queremos guardar los archivos y si queremos crear un nuevo proyecto o añadirlo a uno ya existente. Estos pasos ya los hemos visto en temas anteriores.

Proceso de importación.

Ahora nuestro repositorio local ya está unido al remoto, por lo que solo tendremos que realizar los Push que deseemos para que las versiones se guarden en GitHub.

En este ejemplo hemos utilizado GitHub, dado que es de libre acceso, pero el procedimiento sería similar en cualquier servidor de versiones que queramos utilizar.

Trabajando con ramas

 

Como ya hemos visto, con GIT podemos crear varias ramas de nuestras versiones, dando la posibilidad de trabajar con históricos de versiones en paralelo.

Con EGit esto resulta muy sencillo, tan solo tenemos que crear una nueva rama (braches) y luego, como ya hemos visto, mediante el menú de Replace podemos situarnos en la que queramos recuperar.

Pasos para crear una rama.

Check out

Para trabajar con una rama deberemos: en el menú del equipo, en un nodo del proyecto, seleccionar Team / Switch To… y seleccionar un nombre de la rama de la lista. Si hay demasiadas ramas de la lista no muestra todas. En este caso seleccionar Team / Switch To… /  Other. En el cuadro de diálogo, selecciona una rama, una etiqueta o una referencia.

Cambio de rama.

 

Merging

Para volcar las modificaciones de un branch se hace merge de esa rama hacia la principal. Para ello deberá seleccionar el explorador de paquetes o navigator, abrir el menú contextual de un nodo del proyecto, seleccionar Team / merge tool.

Merge

Push

Los cambios locales realizados en las secciones locales pueden ser subidos (Push) a repositorios remotos, causando una fusión de sus ramas. El asistente Push es más o menos el mismo que el asistente Fetch. En primer lugar, hacer clic derecho en el nodo del proyecto y seleccionar Team / Push… En el cuadro se debe introducir el repositorio al que se desean subir los archivos y ramas.

Realizando un Push.

Para poder realizar un Push necesitamos tener configurado un repositorio remoto.