Porque no deberiamos activar la opción de get latest version on checkout en TFS.

Y me refiero a una característica que en la primera versión de TFS fue eliminada desde el diseño de la aplicación y no una omisión de la característica.  El objetivo de que fuera así tiene que ver con la necesidad de que el código en el repositorio de tfs permanezca en un estado estable que pueda ser construido y probado debido a que se encuentra en un estado consistente.

Por lo tanto cuando nosotros descargamos una versión de nuestro repositorio, nos encontramos con una versión en el tiempo que en teoria deberia de compilar (digo en teoria porque nunca falta el que tira el build) y por lo tanto nosotros hacemos nuestras modificaciones y antes de integrar nuestros cambios con los de los demas deberemos descargar la ultima versión de los archivos de los demas, para verificar que nuestros cambios son compatibles con ese nuevo snapshot que estariamos descargando del código fuente.

Y entonces nos enfrentamos a la pregunta

¿Porque es mala idea el descargar la ultima versión al hacer el check out?

Y la razón es la siguiente, cuando tu actualizas un solo archivo este archivo no corresponde a la misma versión en el tiempo que todo lo demas. Por lo tanto es probable que tu felizmente desarrolles con la idea de que el código funciona correctamente con el código de los demás mientras que si lo subes al source control, dicho código no necesariamente va a compilar. Por lo tanto estas perdiendo sincronia y con ello la posibilidad de implementar un mecanismo eficiente de integración continua.

 

 

 

Mas información

http://blogs.msdn.com/buckh/archive/2005/08/20/454140.aspx

3 thoughts to “Porque no deberiamos activar la opción de get latest version on checkout en TFS.”

  1. Pongamos un poco mas de contexto, resulta ser que actualmente tfs cuenta con una caracteristica llamada get latest version on check out, esta caracteristica proviene de los fans de source safe que insistentemente por esta carateristica.

    Si bien la nueva caracteristica por si sola no es mala, provoca algunos malos hábitos que en el manejo de versiones que pueden ocasionar el típico problema que regularmente se identifica con la frase “work on my machine”. Esto es en algunas ocasiones provocado por el hecho de que el desarrollador no tiene la última versión de todos los archivos, solo tiene la última versión de aquellos a los que le ha dado check out.

    Esto no era tan problemático en tiempos en los que un check out bloqueaba para su modificación un archivo. Pero si es muy problematico en épocas como las actuales en las que el control de versiones puede ser revisado continuamente por servidores de integración continúa que no solo validan que el código compile, si no que también se ejecuten las pruebas unitarias relacionadas con el codigo. Y que para funcionar requieren que el código cuente con las mismas caracteristicas que en la maquina del desarrollador. Por lo que por ejemplo si un desarrollador no le ha dado get latest version en un mes y habilita esa caracteristica sólo tendrá las versiones de sus compañeros de los archivos que le dio check out y todos los demás tendrían un mes de antigüedad aún cuando otros miembros del equipo reaizaran modificaciones.

    Espero haberlo clarificado adecuamente.

    Saludos

  2. El efecto que mencionas Raúl es cierto… aunque (a modo de broma y sarcasmo), la opción por default para muchos desarrolladores debería ser un servicio que les actualice su versión de menos 3 veces al día (cuando llegan, cuando se van a comer y antes de irse). Finalmente esta función del VStudio y TFS, es para evitar un cambio automático no deseado, aunque si se toma la base de que el código DEBERÍA estar bien sincronizado, este detalle no debería ser gran problema.

    Personalmente, muchas veces activo esa opción para darme más cuenta de ciertos cambios (en especial cuando trabajas con otros devs “en vías de desarrollo”) y así se notan más rápido los cambios.

    Francamente, creo que el activar o no activar esa opción, dependerá de los requerimientos y contexto del proyecto/desarrollador. Y que para los dummies sería bueno dejarla activa y para los menos según se requiera. El chiste es que cada quién tenga entendimiento claro de los cambios en el código y realmente sepa usar un controlador de versiones. Lo otro también, es que por NO SABER USAR RAMAS, es frecuente tener devs al estilo llanero solitario que van por su lado dentro de los cambios a la base de código sin saber que para eso es crear su “ramita=espacio asislado=sandbox”, como quién dice… cada cosa en su lugar.

    Saludos Raúl!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.