2009-06-05 30 views
31

Estoy tratando de encontrar las mejores prácticas con respecto al uso del control de fuente TFS. En este momento, cada vez que hacemos una compilación, etiquetamos los archivos que se registran en el TFS con el número de versión. ¿Es este enfoque mejor o peor que simplemente verificar los archivos y tener el número de versión en los comentarios? ¿Puede entonces usar el conjunto de cambios para regresar si es necesario o las etiquetas son aún más versátiles?TFS: etiquetas frente a conjuntos de cambios

Gracias!

Respuesta

32

Tienen dos propósitos diferentes, los ChangeSets son cuando los archivos realmente han cambiado y usted desea mantener un registro permanente de ese cambio. Las etiquetas marcan una cierta versión de los archivos para que pueda volver fácilmente a ese punto. A menos que su compilación realmente cambie los archivos bajo control de fuente y desea registrar estos cambios. Deberías etiquetar.

Además, el etiquetado requiere menos recursos. Y puede tener varias etiquetas en la misma versión de un archivo.

+16

Las etiquetas pueden dar miedo, se pueden aplicar solo a una parte de la base de código, pueden cambiarse después de que se eliminen y pueden eliminarse. El número CS es una constante. No se puede cambiar, siempre debe obtener la última versión (a menos que el Administrador de TFS haya utilizado Destruir para eliminar archivos del control de origen, que una etiqueta tampoco puede restaurar). En mi experiencia, una etiqueta es agradable, ya que puede darle un nombre legible y puede buscarse. El número de CS funciona bien como alternativa. – jessehouwing

2

En este momento, en cualquier momento que hace una compilación, que etiquetar los archivos que se registró en el TFS con el número de versión

No es necesario hacer esto. TFS puede referirse a un estado de la base de código de muchas maneras, de las cuales las etiquetas son de hecho una, pero también lo son las construcciones e incluso los conjuntos de cambios. Se puede ver las formas disponibles para reconstruir un punto particular en el tiempo haciendo una Get Specific Version... y el examen de las opciones en el menú desplegable Type:

Changeset 
Date 
Label 
Latest Version 
Workspace Version 

Changeset le permite obtener justo después de cualquier conjunto de cambios; Date es obvio; Label es también, excepto que se compila automáticamente * crear etiquetas (elija Label desde este menú desplegable y luego eche un vistazo en el cuadro de diálogo Find Label).

* ¡Creo que es automático! A menos que sea algo que hayamos configurado especialmente donde estoy en este momento ...

+3

Team Build puede etiquetar automáticamente, cuando elige la opción en la configuración de Definición de compilación (en la sección avanzada). – jessehouwing

7

Debe etiquetar las versiones de los archivos de origen que componen su compilación. Si usa TeamBuild, lo hace automáticamente. Combina el nombre de la definición de tu construcción, la fecha y el número de compilación. Entonces no necesitas hacer nada.

Su otra opción no es muy convencional y requiere mucho trabajo innecesario. Si lo entiendo correctamente, verificaría sus archivos fuente durante el proceso de compilación y luego los verificaría con un número de versión especificado en los comentarios del check-in. Esto es lo que Alex mencionó como un recurso muy intensivo en términos de su proceso de compilación y también su repositorio de control de origen. Además, ¿cómo obtendría los archivos de origen para una versión particular si la información de la versión está incorporada en los comentarios? Será muy difícil y tendrá que sentarse y escribir su propia aplicación que utiliza la API de control de fuente TFS para descargar los archivos de origen a un área de trabajo buscando el número de versión en los comentarios de check-in. Esto crea una complejidad innecesaria y dolores de cabeza.

Si usa etiquetas en su lugar, puede hacer una etiqueta de obtención en VS IDE para descargar los archivos fuente que componen esa etiqueta. Incluso puede decirle a TeamBuild que use una etiqueta en lugar de descargar los últimos archivos fuente durante la automatización de compilación. De esta forma, puede crear versiones anteriores de su aplicación fácilmente. Con las etiquetas, también puede aplicar conjuntos de cambios posteriores a una etiqueta existente si hubo cambios de código simplemente obteniendo esa etiqueta y luego obteniendo conjuntos de cambios específicos y luego haciendo una etiqueta rápida o creando una etiqueta nueva.

El etiquetado es muy potente, cómodo de usar y forma parte de TFS. En lugar de idear una solución personalizada que requiera un gran esfuerzo para que funcione y se mantenga, solo intente utilizar lo que ya está disponible.

0

StackOverflow no me deja comentar las respuestas anteriores, así que estoy escribiendo esto como una nueva "respuesta". Quiero aclarar algunos de los conceptos erróneos enumerados anteriormente.

En primer lugar, el uso de etiquetas TFVC requiere MÁS recursos que el uso de conjuntos de cambios. Mucho más. Los comandos como Branch, Merge y Get by Label son más lentos. Para servidores empresariales con enormes bases de datos, no desea utilizar etiquetas.

En segundo lugar, las compilaciones no crean automáticamente etiquetas, aunque los pasos de compilación predeterminados incluyen un paso para crear una etiqueta.

En tercer lugar, como ya se ha mencionado, las etiquetas se pueden mover o eliminar, por lo que son mucho menos confiables que los conjuntos de cambios que son inmutables.

En general, le recomiendo que NO use etiquetas. La alternativa más simple es recordar el número de conjunto de cambios para sus compilaciones. O si desea aislar diferentes versiones de lanzamiento, debe crear ramas de publicación.

Las etiquetas son adecuadas para sistemas pequeños, pero no son buenas para grandes empresas.

+0

En nuestra configuración, tenemos el proceso de compilación en el agente de VSTS para crear una etiqueta en esa versión del código después de que la construcción sea exitosa. Esto no mitiga los problemas de rendimiento de los que ha hablado, pero hace que las etiquetas sean más confiables ya que hacen referencia a algo tan permanente y definitivo como un número de Chanset. Nos permite encontrar fácilmente la versión del código incluido en una compilación, pero si alguien edita o elimina la etiqueta, no sería un desastre. –

Cuestiones relacionadas