Una de las cosas que suele ocurrir normalmente en las implantaciones de Team Foundation Server es que se quieran activar una serie de políticas check-in  que no vienen incluidas en el producto por lo que necesitamos distribuir estas políticas a cada una de las máquinas de los desarrolladores.

 

Dada la capacidad de extensibilidad de Team Foundation Server existe un gran numero de políticas de Check-In que han sido creadas por la comunidad. Muchas de estas políticas son realmente buenas y cada administrador de TFS se hace con una serie de ellas que hacen cumplir las necesidades de la compañía. A mi por ejemplo me gustan mucho la Code Comment CheckIn Policy (CCCP) de Christhop Wille, la de Get Latest Before Check-In de Steven Borg o la política de Source Analysis for C# de Eugene Zakhareyev.

 

Desgraciadamente estas políticas son de tres autores diferentes y aunque dos de ellas poseen un instalador, es un poco tedioso tener que distribuirlas por separado. La mejor opción al respecto sería crear un instalador de políticas que instale todas las políticas necesarias y nos permita hacerlo de forma cómoda o porque no, poder hacerlo dentro del protocolo de instalación de equipos de desarrollo que existe en muchas compañías.

 

Para ello lo que vamos a hacer es crear un paquete personalizado de Check-In Policies. Para crear el instalador voy a utilizar WiX (Windows Installer Xml) un framework opensource que permite generar ficheros de instalación MSI basándose en ficheros Xml. Además WiX es una de las nuevas características de Rosario, la próxima versión de Visual Studio. He intentado hacerlo utilizando la última CTP de Rosario, pero dado que es una máquina virtual e iba un poco lento, al final lo he hecho desde Visual Studio 2008 instalándome Votive, un paquete que permite la creación de proyectos de WiX desde esta versión de Visual Studio.

 

Dado que esto no pretende ser un tutorial de WiX voy a centrarme en el proceso necesario para desplegar una Check-In Policy a un equipo de desarrollo. En primer lugar, comentar que las políticas de Check-In son dlls resultantes de crear un proyecto de tipo Class Library y hacer que una clase herede de la clase PolicyBase incluida en el assembly Microsoft.TeamFoundation.VersionControl.Client. Esta clase PolicyBase implementa dos interfaces IPolicyDefinition e IPolicyEvaluation y por lo tanto nuestra clase también los debe implementar. Estos dos interfaces son usados dentro de la arquitectura de TFVC y permiten que se ejecute el código que se haya definido en las políticas creadas.

 

Una vez creada una política de Check-In son solo dos los pasos necesarios para integrarla dentro de Visual Studio y para que se pueda activar: Copiarla a una carpeta en el equipo de destino e introducir una clave en el registro de Windows en "HKLM\SOFTWARE\Microsoft\VisualStudio\9.0\TeamFoundation \SourceControl\Checkin Policies" que informe a Visual Studio de que existe una nueva política en la ruta donde se copió la dll.

 

Finalmente el paquete resultante contiene las siguiente políticas:

 

  • Power Tools 2008 Check-In Policies
    • Changeset Comments Policy
    • Custom Path Policy
    • Forbidden Pattern Policy
    • WorkItem Query Policy
  • Code Comment Checking Policy v3.0.0.1
  • Get Latest Before Check-in Policy
  • Source Analysis for C# Check-In Policy
  • Time That Task Check-In Policy
  • Merge / Branch Only Check-In Policy
  • Check for Comment Policy

 

Podéis descargar el archivo MSI de aquí y el código fuente de aquí

 

Referencias: