Gerrit Code Review, control de versiones más allá de Git

Gerrit Code Review es un sistema de control de versiones implementado prácticamente en su totalidad en Java que trata de ir más allá de Git. El proyecto, desarrollado por Google, contiene dentro a JGit, un porte de Git a Java, Jetty para ejecutar la interfase web, una implementación de SSL 100% desarrollada en Java y añade cierta funcionalidad sobre la típica de Git, siendo la más destacable el soporte formal para las revisiones de código.
En Git habitualmente uno realiza commits contra el repositorio local hasta que está preparado para enviar los cambios al repositorio remoto. Cuando los envía, puede enviarlos a la rama principal o a alguna otra rama. Y en algún momento se supone que los cambios de las otras ramas se fundirán con la rama principal. En Gerrit se da soporte a hacer commits para realizar revisión de código.
Estos commits deben ser revisados por otros desarrolladores, los cuales pueden añadir comentarios o solicitar modificaciones. Pueden definirse varias políticas para la aceptación del código, como que un usuario con permisos especiales cuando considere que ha terminado la revisión de código lo acepte la rama principal, o se acepte cuando consiga un número determinado de votos de varios usuarios.
Gerrit se distribuye como un war que puede desplegarse en cualquier contenedor de Servlets, pero dentro del war va empaquetado un Jetty y el war es auto ejecutable. En la actualidad Gerrit sólo depende de Git para ejecutar ciertos comandos relacionados con diffs (los desarrolladores tienen intención también de implementar esto); por el resto es absolutamente Java.
Esto tiene varias ventajas cuando se le compara con un sistema de control de versiones tradicional. Éstos sistemas de control de versiones (CVS, SVN, Git...) suelen estar basados en un montón de comandos de Unix, por lo que es necesario que todos los commiters tenga un usuario creado en la máquina, y que su usuario tenga permisos para ejecutar esos comandos. Esto hace que configurar una de estas máquinas de modo completamente seguro no sea trivial.
Gerrit al ser 100% Java y al realizar (prácticamente) todo el trabajo la máquina virtual no requiere que los commiters tengan usuarios creados en la máquina. Además, ofrece una interfaz web de administración que permite crear usuarios y controlar todos sus permisos de un modo sencillo.
La principal desventaja de Gerrit a día de hoy probablemente sea que realizar una copia de seguridad del repositorios más complicado de lo que suele ser en el resto de los sistemas de control de versiones, donde es suficiente con copiar todo lo que se encuentra debajo de un directorio determinado. Gerrit depende de una base de datos (soporta actualmente HSQL, MySQL y Postgres). Para realizar una copia de seguridad es necesario también realizar la copia de la base de datos. En el caso de HSQL (que se ejecuta en el mismo espacio de memoria que la aplicación) hay que parar el servidor. En el caso de MySQL y Postgres es necesario utilizar alguna herramienta de administración.
Gerrit se distribuye bajo licencia Apache. Como ya he mencionado, Google está detrás de él y es usado por proyectos como Android, así que está más que demostrado su valía. También es empleado por otras compañías como HTC, Motorola y Sony Ericsson (aunque pudiese parecer lo contrario por la lista de usuarios, Gerrit no tiene ninguna funcionalidad específica para desarrollar soluciones para movilidad; la lista de usuarios probablemente esté sesgada por el hecho de que Android ha sido el primer proyecto de entidad en usarlo.
Si estás interesado en aprender algo más sobre Gerrit, aquí tienes su documentación.

Reader Comments