domingo, 27 de junio de 2010

Sistema de control de versiones distribuido, Git

Git - the fast version control system

Para aquellos que trabajan con archivos, normalmente archivos de código fuente de un programa, en grupos de trabajo en el que colaboran varias personas se hace imprescindible trabajar una una herramienta de control de versiones.

Entre las principales ventajas que aporta una herramienta de control de versiones es el disponer de todas las versiones que se han hecho de un archivo, permitir colaborar al equipo de manera ágil haciendo que las modificaciones que realiza cada persona sean fáciles de compartir con el resto y permitir hacer «fotos» del estado de los archivos del proyecto para su posterior consulta o uso.

A día de hoy existen principalmente dos tipos de heramientas según su arquitectura:

- Cliente/Servidor o centralizadas: donde el repositorio que almacena el estado de la herramienta de control de versiones se almacena en un servidor. Ejemplos de herramientas de control de versiones de este tipo son Subversion, CVS, Visual SourceSafe, Team Foundation Server, ...

- Distribuidas: donde cada persona que colabora en el proyecto posee una copia completa de todo el respositorio de versiones. Las herramientas de este tipo se están adoptando rápidamente por muchos proyectos de software libre por las ventajas que les aportan dada la forma en la que se colabora en ellos. Ejemplos de este tipo son Git, Bazaar, Mercurial, ...

La ventajas de un sistema de control de versiones sobre uno C/S son principalmente que no hay un único punto de fallo (el servidor) y que en algunos como en el caso de Git se puede seguir trabajando y haciendo commits, branches, etc... sin tener que estar conectado a la red o internet. Ejemplos de proyectos que usan Git son: Linux Kernel,Gnome, Qt, Android, Debian, ...

Una vez conocidas algunas de las ventajas, pero importantes, que nos puede aportar trabajar con un sistema de control de versiones distribuido vamos a ver los comandos básicos de Git que hay que conocer para realizar el trabajo diario y como integrar el enotorno de desarrollo eclipse con esta herramienta de control de versiones para un desarrollo más agil.

Creación del repositorio
$ git init

Añadiendo archivos
$ git add *.java

Haciendo commit
$ git commit -m 'initial project version'

Creando branches
$ git branch test

Cambiando de branch de trabajo
$ git checkout test

Haciendo merges de branches
$ git checkout master
$ git merge test

Obteniendo cambios de un reposotorio remoto
$ git fetch [remote-name]

Compartiendo cambios a un respositorio remoto
$ git push origin master

Integración con eclipse

Para eclipse está disponible el plugin egit que permite trabajar con Git sin salir del propio entorno y sin tener que usar la linea de comandos. La instalación del plugin se hace mediante un «update site», para ello vamos a Help > Install New Software e introducimos en el campo Work With el update site del plugin, que es: http://download.eclipse.org/egit/updates. Seleccionamos las opciones de las siguientes capturas de pantallas y finalmente reiniciamos. Una vez reiniciado veremos que en la opción Team > Share project ahora podemos conectarnos con un repositorio Git. Seleccionamos la opción Git y pulsamos la opción crear repositorio. Ya tenemos el proyecto en un repositorio Git ahora nos queda ir añadiendo los archivos y haciendo commits de ellos.




Enlaces:
Web de Git
Pro Git (libro)
Everyday GIT With 20 Commands Or So
GitHub, repositorio Git para proyectos