Introducción

 

Una de las cosas que suelo oír cuando hablo a alguien de Team Foundation Server es un comentario del estilo de "Team Foundation Server. Si, si, la versión nueva de Visual SourceSafe". Team Foundation Server es mucho más que eso, el control del código fuente es solo una de las patas del producto de servidor de la gama Team System.

 

El control de versiones de Team Foundation Server tiene muchas semejanzas con Visual SourceSafe, al igual que con cualquier otro software de control de código fuente como CVS, Subversion o Starteam. Al contrario de lo que muchos piensan Team Foundation Version Control es un producto escrito desde cero y no es una nueva versión de SourceSafe.

 

Diferencias con otras soluciones

 

Para empezar, una de las mayores diferencias que posee TFVC con respecto a Visual SourceSafe es el medio de almacenamiento del código fuente. Si bien ya sabemos que Visual SourceSafe lo almacena en disco, lo que mucha gente no sabe es que TFVC lo almacena en una base de datos SQL Server. El tener almenado el código en una base de datos aporta varias ventajas, entre ellas la posibilidad de hacer protecciones de código fuente como un solo bloque. Es decir, o se protegen todos los ficheros o no se protege ninguno. Esta ventaja la aporta el medio donde se almacena el código, al ser una base de datos es un medio que soporta transacciones.

 

Como curiosidad, otra de las diferencias que posee TFVC con respecto a Visual SourceSafe, y otras soluciones de control de código fuente como Subversion, es el algoritmo de versionado de ficheros. La mayoría de repositorios de código guarda la primera versión del fichero como el fichero base y van creando versiones diferenciales con las modificaciones que se suben al servidor. Este algoritmo se llama Delta Algorithm y cada vez que un usuario pide la ultima versión de un fichero, el control de código fuente compone el fichero utilizando el fichero base y las modificaciones almacenadas en la ultima versión del fichero. TFVC utiliza este mismo algoritmo pero a la inversa, el Reverse Delta Algorithm, que se diferencia en que la versión base del fichero utilizado para componer todas las versiones no es el primer fichero que se sube, sino el último. Al ser el último fichero el fichero base, cuando un usuario pide la última versión de un fichero simplemente se le da esa versión, evitando el procesado de composición del fichero que se requería con el algoritmo original.

 

¿Qué aporta nuevo TFVC?

 

Volviendo de nuevo al tema de protección de código por bloques, ésta introduce un concepto nuevo que no existía en Visual SourceSafe, el conjunto de cambios (changeset). Un changeset (me gusta más la palabra inglesa), representa al conjunto de todos los ficheros que se protegieron en el servidor en una fecha y hora concreta y por un usuario concreto dentro del ámbito de un Proyecto de equipo (Team Project). El changeset nos da la posibilidad de poder deshacer los cambios hechos a todos los ficheros que se subieron juntos, volviendo automáticamente  a la versión que necesitamos.

 

Otra de las ventajas que nos ofrece esta protección de código en bloque es que si asociamos el changeset a un Elemento de trabajo (Work Item) podremos saber que ficheros están asociados a cada funcionalidad del producto que estemos desarrollando. De esta forma se simplifican bastante las futuras modificaciones que queramos hacer sobre una funcionalidad al saber en qué ficheros se encuentra el código.

 

TFVC proporciona interfaces de gestión tanto de línea de comando como de forma grafica y posee muchas características de otras soluciones para el almacenamiento de código como gestión de versiones de ficheros planos y binarios, la posibilidad de crear ramas dentro de un proyecto o la gestión de usuarios y permisos asociados al código fuente. Pero también proporciona cosas nuevas como Aplazar y Retomar cambios (shelving/unshelving) o las Políticas de protección (Check-in policies), además de permitir configurar el modelo de protecciones pudiendo hacer exclusivo o compartido (exclusive/shared).

 

Control de versiones con Team Foundation Server (I) - Imagen 1

 

Aquí concluye la primera parte de la serie de entradas que dedicaré al control de versiones de Team Foundation Server. En las siguientes entradas entraré en detalles sobre estas características que ofrece el producto.