Propósito 1: Git, gitHub y SourceTree: control de versiones para el siglo XXI

Autor: | Última modificación: 13 de noviembre de 2022 | Tiempo de Lectura: 4 minutos
Temas en este post:

7 Propósitos de Año Nuevo para Desarrolladores

Este artículo es la primera parte de mis 7 propósitos para desarrolladores para este 2013.

Propósito Uno: domina el control de versiones con git y gitHub

Aprender a usar un sistema de control de versiones e integrarlo en tu trabajo diario es una revelación: de repente los errores son fáciles de deshacer, las versiones antiguas se recuperan en segundos, los miembros del equipo pasan a colaborar de verdad en vez de estorbarse entre sí, incorporar y reutilizar código de terceros es trivial y por muchos discos que fallen, el código no se pierde. Nunca. Desgraciadamente, son muchos los desarrolladores (tanto individuales como equipos) que aun no usan esta tecnología.

Sospecho a que se debe a una cierta barrera de entrada que tienen estas herramientas, ya que a menudo después de leerse un libro uno no acaba de ver claro cómo integrarlo en su trabajo. No obstante, el esfuerzo necesario vale la pena y mucho, ya que pocas cosas mejorarán taanto tu calidad de vida como desarrollador.

Alcanzado el momento de iluminación nirvánica en que uno lo pilla y al igual que Neo, exclama «¡Ya sé Git!» cambia para siempre nuestra forma de trabajar. Ya no podremos imaginarnos como se podía vivir antes.

12 preguntas para evaluar un equipo de desarrollo, por Joel Spolsky

Joel Spolsky, de Joel On Software, creó un test para medir un equipo de desarrollo que consta de 12 preguntas. La primera de ellas es ¿usas un sistema de control de versiones?. Este test lo creó hace 13 años. Si aun no utilizas esta tecnología, o aunque la usas, crees que no le sacas todo el provecho que podrías, cambia eso este año. Hazlo ya.

El DVCS del Espacio Exterior: Darcs

El mundillo del control de versiones, antes fosilizado y catatónico, recientemente ha entrado en ebullición. Algo está cambiando… de repente todos los grandes proyectos de software libre se están pasando a sistemas de control de versiones distribuidos (DVCS) en vez de los clásicos CVS y Subversion.

El DVCS del espacio exterior_control de versiones
Klaatu Barada Nikto! (En Cristiano: ¡deja ya de usar CVS!)

Como otros muchos, empecé con Visual SourceSafe (sí, ya lo sé), después me pasé a Perforce, hasta que empecé a oír hablar de algo ribolusionario llamado sistema de control de versiones distribuído (DVCS). El primero que vi fue Darcs. Al verlo, fue encoñamiento instantáneo:

  1. Sistema de control de versiones distribuido. ¿Distribuido? Ni idea de qué será eso, pero suena bien. 😉
  2. ¡¿Implementado en Haskell?! ¡Toma ya!
Mi geekómetro se salió de la escala y lo instalé de inmediato. Las cosas no podían pintar mejor: nada de instrucciones claras y prácticas en el manual. No. En vez de eso, una paja mental P O R T E N T O S A sobre la teoría física en la que se basó el autor para crear el producto. ¡Con dos gónadas! Digo, mónadas.

A pesar del buen principio, la cosa no terminó bien. Por alguna razón, todo lo relacionado con Haskell no termina funcionando bien conmigo: estamos condenados a rozarnos sin nunca encontrarnos.

El problema creo que es el tipado estático, que es, como todos sabemos, un error craso: la madre de todas las optimizaciones prematuras. Por mucho que Haskell haya llevado ese error a la perfección, y como en todo lo perfecto haya cierta belleza, sigue siendo un error. Pero no divaguemos.

Y llegaron los 3 Reyes Magos: git, gitHub y SourceTree

Al poco rato oí hablar de una de esas absurdas trifulcas que se montan en el mundillo de software libre. Parece ser que Linus Torvalds estaba usando un DVCS propietario (¡horror!) llamado BitKeeper para gestionar el kernel de Linux.  El creador de BitKeeper, también contribuidor al kernel de Linux, ofreció una licencia gratis a varios primeras espadas del software libre y muchos aceptaron.

github ninja
¡Conviértete en un ninja de git!

En otro post contaré el cotilleo completo, pero el resultado (previsible) fue que todo terminó como el Rosario de la Aurora, con insultos, amenazas de demandas y RMS poniendo la guinda con su habitual educación y diplomacia. Divertidísimo. 😉

Al poco rato, Linus anunció un proyecto para sustituir a BitKeeper llamado git (jerga británica para gilipollas: claramente los ánimos ya se habían calmado).

En poco tiempo, todos los grandes proyectos de software libre, como el kernel de Linux, Mozilla, Gnome, Ruby on Rails, Node.js se pasaron al nuevo git (gilipollas). En un abrir y cerrar de ojos, git se ha convertido en el estandar de facto para todos los proyectos de desarrollo, desde los más sencillos a los mastodónticos. Si vale para esos señores, digo yo que valdrá para mí…y para ti.

El éxito fulgurante de git está en que se adapta perfectamente a las necesidades tanto de desarrolladores individuales como a los equipos inmensos y geográficamente dispersos. Además, git viene de serie en OSX y Xcode incluye por defecto la integración con git. Si eres desarrollador de iOS u OSX, git es la herramienta idonea para ti.

Si a eso sumamos la infinidad de librerías de Cocoa que hay en gitHub (gitHub: foco o punto de encuentro de git, o sea, de gilipollas) y la facilidad de uso de sus repositorios remotos, no hay duda posible sobre la herramienta que usar.

Git es una herramienta de linea de comandos, pero si eso te aburre o echa para atrás, hay una infinidad de GUIs. El que uso yo es SourceTree, de Atlassian. Es para Mac, francamente bueno y gratis.

git es solo el principio

Saber utilizar correctamente git y los servicios de gitHub es vital para la productividad de cualquier equipo de desarrollo hoy en dia. Además, el control de versiones es un componente fundamental que se integra con las metodologías más punteras de desarrollo, como TDD y Continous Integration. Otro día hablaremos de eso.

No seas git, y ponte ya. Según Joel Spolski, llevas 13 años de retraso. Que no sean 14. 😉