¿Es importante hacer Check-in cada día?

A raíz de un Workshop que hice este martes en Microsoft, me he decidido a escribir un post, que aunque tiene su parte técnica, es más bien una filosofía. Una de las prácticas recomendadas por Martin Fowler en su articulo Continuous Integration (revisión de Mayo 2006) es que se realice al menos un Check-in de código en el repositorio al día y esta sugerencia tiene varias razones con las que yo estoy bastante de acuerdo.

En primer lugar, si depositamos código en el repositorio al menos una vez al día, nuestro código estará seguro ante una catástrofe en nuestro equipo, si llevásemos una semana sin subir nada al repositorio y por cualquier motivo se estropease nuestro disco duro sería bastante duro tener que volver a repetir todo el trabajo, sin embargo subiendo el código al menos una vez al día éste pasaría a formar parte del backup diario de nuestro repositorio con lo que en el peor de los casos perderíamos solo el trabajo del último día. Además mientras menos cantidad de código subamos al repositorio cada vez, menos costosa será la integración del mismo con el código que ya hay en el repositorio, es decir, menos tiempo entre cada subida == menos código que integrar == menos problemas de integración.

Por otro lado, el subir código, no una, sino varias veces al día, da una sensación de progreso increíble. Es algo más psicológico, pero el ir cerrando pequeñas tareas da la sensación de rendir mucho y eso es positivo. El problema muchas veces viene dado por que se estiman tareas que duran más de un día y obviamente subir algo incompleto al repositorio y que pueda causar inestabilidad no es buena idea. En estos casos lo mejor sería intentar por todos los medios dividir esas tareas en subtareas, para que el tiempo de cada una de ellas este por debajo de un día y así poder usar es práctica.

Entorno a esta idea, y solo para trastear un poco con la API de Team Foundation Server, he desarrollado una pequeña utilidad (por ahora en versión 0.1) que teniendo una solución abierta en Visual Studio detecta si la solución esta enlazada a Team Foundation Server y si es así obtiene cada uno de los proyectos de la misma y mira los Check-ins que hubo sobre cada uno de los ficheros en las últimas 24 horas. Es una versión muy de pruebas aún, y tengo que ver cual es la forma óptima de obtener los ultimos check-ins del repositorio, pero para soluciones de un tamaño medio funciona a la perfección.

No es el objetivo de este post entrar en los detalles técnicos de como esta hecha, pero es una clase, que quitando comentarios, ronda las 160 ó 170 lineas, así que la complejidad no es mucha y es fácil de entender. Yo la tengo configurada como una herramienta externa dentro de Visual Studio y le paso como parametro directamente la ruta de la solución que esta abierta, así es mucho más cómodo que ejecutarla desde línea de comando. Os dejo una captura para que la veáis, y por su puesto un zip con el código fuente.

Check-in cada dia - Imagen 1

Y aquí tenéis el zip con el código fuente: CheckCISolution.zip

Se aceptan sugerencias!!

teamsystem.es
Este post es contenido cross-posting desde www.teamsystem.es y estoy muy interesado en tu opinión. ¿Porqué no te acercas y dejas un comentario para que todos podamos aprender?