Ayer me encontré con el siguiente artículo, "The 10 commandments of good source control management" .  Había sido twiteado por @psluaces. Comencé a leerlo y no pude evitar que una sonrisa invadiera mi cara conforme iba leyendo. Aunque algunos de los mandamientos no son muy útiles o relevantes para mí (no he usado VSS nunca, por ejemplo). Otros los he cometido y sufrido con demasiada frecuencia como para dejar pasar la oportunidad de comentar al menos un par de ellos.

"Always inspect your changes before committing"

"Repasa tus cambios siempre antes de subirlos al repositorio"

Hazlo, no lo pienses. No te fíes ni de tu sombra. Al principio puede parecer una perdida de tiempo, pero es una de las costumbres que más agradezco. Porque soy despistado y humano. Por lo tanto me olvido que he cambiado algo que no quería subir o me equivoco en el código. Ese segundo vistazo me ayuda a eliminar muchos errores y problemas para mis compañeros desarrolladores.

"Remember the axe-murderer when writing commit messages"

"Recuerda al asesino del hacha cuando escribes tus mensajes de commit"

Y os preguntaréis quién coño es el "asesino del hacha". Pues según el autor del artículo, existe un dicho que viene a decir lo siguiente: "Escribe tu siguiente comentario de commit como si el siguiente desarrollador que va a leerlo fuera un maníaco depresivo con un hacha que sabe donde vives".

No lo cabrees, ¡por tu vida! Cosas como las que siguen probablemente lo pongan de muy mala leche:

#10 Mierda

#89 Fix tests

Opino que son dos ejemplos claros de pésimos comentarios para commits. Y eso que he escrito unos cuantos de esos, lo reconozco. El problema viene cuando tienes que volver sobre ellos porque estas revisando la historia de tu repositorio: te acuerdas del maldito día que naciste, os lo prometo.

Mucho mejor algo así:

#89 Fixing the first UI test to work better, introducing new concept ClassSetup and ClassTearDown

Y no vale currarse uno largo y reutilizarlo durante los cinco siguiente commits, cada commit tiene que ser diferente; se debe poder saber qué se ha hecho en ese commit con solo leer el mensaje. La diferencia cuando leas tu log será brutal.

Os recomiendo que os leáis el artículo de arriba a abajo, es muy bueno.

PS: He encontrado varios de los mandamientos en otra fuente, el libro Continuous Delivery. No pueden estar equivocados los dos, ¿no?