Eleanor Roosevelt, siendo primera dama de Estados Unidos y de visita oficial en Argentina, al contemplar la belleza de las cataratas del Iguazú sólo pudo exclamar «¡Pobre Niágara!». Es una exclamación muy normal cuando se te rompen todos los esquemas conocidos. En la cuadriculada cabeza de Eleanor no cabía belleza superior a sus amadas y conocidas cataratas del Niágara y sin embargo las del Iguazú superaron salvajemente sus expectativas. Algo así pasa cuando conoces Git .
Tras haber trabajado con Source Safe, CVS y Subversion de forma esporádica, me pasé a Perforce teniendo la firme convicción de que era lo mejor y lo único bueno en cuanto a SCM se refiere. Tras 4 años usando este entorno propietario (y carísimo), más por necesidad que por ganas de cambiar, empecé a buscar un SCM gratuito (y libre a poder ser). La tendencia entre los programadores parecía llevarme de forma irremisible hacía Git, un nuevo concepto de SCM en el que las jerarquías se desvanecen para dar paso a una especie de light-SCM en el cual todos los nodos del sistema son igualmente importantes y contienen toda la información para ser totalmente autónomos.
Esto abre un mundo de posibilidades y ventajas:
-
Se aumenta la velocidad al trabajar casi siempre en local.
-
Se reduce la necesidad de estar siempre conectado.
-
Se aumenta la fiabilidad del sistema al tener todos los nodos una copia completa del proyecto.
Otra gran ventaja por la que supera a todos los demás SCM que he conocido es el manejo de ramas y etiquetas. En mi ex-favorito SCM, Perforce, el tema de las ramas era complicado y pesado: cada vez que creabas una rama se creaba una nueva copia de todos tus fuentes tanto en el servidor como en local. Con Git crear una rama es inmediato y no requiere ninguna copia. Ni hablar ya de las etiquetas, algo que Perforce ni siquiera soporta.
¿Problemas? Pues sí, Git hoy por hoy, adolece de un gran problema: la facilidad de uso. Aquello que con Perforce está clarísimo, en Git es muy fácil, pero «hay que saber hacerlo». Un par de proyectos empiezan a iluminar el camino de los usuarios de Git: Git Extensions y TortoiseGit. El primero es un acertado GUI que rompe con todo lo conocido en el software libre y se acerca a la facilidad de uso de Perforce (sin todavía alcanzarlo ni de lejos) y el segundo es un re-frito del TortoiseSVN que todavía está en pañales. Ambos son muy recientes, pero muy prometedores. Esa es otra guerra, ¿conseguirán estos GUI arrebatar a Perforce a los usuarios que sólo buscan la facilidad?
No seguiré con la comparación entre Git y Perforce. Sólo diré que le faltan pocas características a Git para ser mi SCM soñado y algunas de ellas se pueden solucionar mediante scripts (¿he dicho que Git es altamente configurable? mucho más que P4). Tengo la teoría de que todos los programadores que hemos trabajado mucho tiempo con sistemas de control de versiones nos hemos planteado como sería el ideal. En mi caso hasta estuve a punto de programar uno. Ahora viendo Git lo único que se me ocurre es sugerir las pocas mejoras (GUI aparte) que necesita para ser perfecto. ¿Cómo seria tu SCM ideal?
3 respuestas a «Git: ¡Pobre Perforce!»