TFS: Labels vs Changesets

j'essaie de trouver des pratiques exemplaires concernant l'utilisation du contrôle à la source de TFS. En ce moment, à chaque fois que nous faisons une compilation, nous étiquetons les fichiers qui sont vérifiés dans le TFS avec le numéro de version. Cette approche est-elle meilleure ou pire qu'une simple vérification de fichiers et d'avoir le numéro de version dans les commentaires? Vous pouvez ensuite utiliser l'ensemble de modifications pour revenir en arrière si nécessaire ou les étiquettes sont encore plus polyvalente?

Merci!

31
demandé sur laconicdev 2009-06-05 19:21:36

4 réponses

ils ont deux buts différents, ChangeSets sont quand les fichiers ont effectivement changé et vous souhaitez garder un enregistrement permanent de ce changement. Les étiquettes marquent une certaine version des fichiers de sorte que vous pouvez facilement revenir à ce point. À moins que votre compilation ne modifie des fichiers sous contrôle source et que vous ne souhaitiez enregistrer ces modifications. Vous devriez être à l'étiquetage.

de plus, l'étiquetage exige beaucoup moins de ressources. Et vous pouvez avoir plusieurs étiquettes sur la même version d'un fichier.

32
répondu Alex 2009-06-05 15:30:50

vous devez étiqueter les versions des fichiers source qui composent votre Compilation. Si vous utilisez TeamBuild, il le fait automatiquement pour vous. Il combine le nom de votre définition de construction, la date et le numéro de construction. Donc tu n'as pas besoin de faire quoi que ce soit.

Votre autre option n'est pas très conventionnel et nécessite beaucoup de travail inutile. Si je le comprends correctement, vous vérifierez vos fichiers source pendant le processus de compilation et les vérifierez de nouveau avec un numéro de version spécifié dans la case commentaires. C'est comme Alex l'a mentionné avec beaucoup de ressources en termes de votre processus de construction et aussi de votre référentiel de contrôle des sources. De plus, comment obtiendriez-vous les fichiers source d'une version particulière si l'information de la version est intégrée dans les commentaires? Ce sera très difficile et vous devrez vous asseoir et écrire votre propre application qui utilise l'api de contrôle source de TFS pour télécharger les fichiers source dans un espace de travail en cherchant le numéro de version dans l'enregistrement. commentaire. Cela crée une complexité inutile et des maux de tête.

si vous utilisez des étiquettes à la place, vous pouvez faire un get by label dans VS IDE pour télécharger les fichiers source qui composent cette étiquette. Vous pouvez même dire à TeamBuild d'utiliser une étiquette au lieu de télécharger les derniers fichiers source pendant l'automatisation de la construction. De cette façon, vous pouvez construire des versions précédentes de votre application facilement. Avec les étiquettes, vous pouvez également appliquer des modifications ultérieures à une étiquette existante s'il y a eu des modifications de code en obtenant simplement que label et ensuite obtenir des modifications spécifiques et ensuite faire une étiquette rapide ou la création d'une nouvelle étiquette.

L'étiquetage est très puissant, pratique à utiliser et fait partie du TFS. Plutôt que de venir avec votre solution personnalisée qui requiert beaucoup d'efforts pour le faire fonctionner et à entretenir, essayez d'utiliser ce qui est déjà disponible.

7
répondu Mehmet Aras 2009-06-05 16:09:25

en ce moment, à chaque fois que nous faisons une compilation, nous étiquetons les fichiers qui sont vérifiés dans le TFS avec le numéro de version

Vous n'avez pas besoin de le faire. TFS peut faire référence à un État de la base de code de nombreuses façons, dont les étiquettes sont en effet un - mais sont des constructions et même des ensembles de modifications. Vous pouvez voir les moyens disponibles pour reconstruire un point particulier dans le temps en faisant un Get Specific Version... et l'examen des options dans le Type liste déroulante:

Changeset
Date
Label
Latest Version
Workspace Version

Changeset vous permet d'obtenir juste après n'importe quel changement; Date est évident; Label est trop, sauf que construit automatiquement* créer des étiquettes (choisissez Label à partir de cette liste déroulante puis un coup d'oeil dans le Find Label boîte de dialogue).

*je pense que c'est automatique! À moins que ce soit quelque chose que nous avons mis en place spécialement là où je suis en ce moment...

2
répondu AakashM 2009-06-05 16:00:09

StackOverflow ne me laisse pas commenter les réponses ci-dessus, donc j'écris ceci comme une nouvelle "réponse". Je tiens à clarifier certaines des idées fausses énumérées ci-dessus.

tout d'abord, l'utilisation des étiquettes TFVC nécessite plus de ressources que l'utilisation des ensembles de modifications. Beaucoup plus. Les commandes telles que Branch, Merge, et Get by Label sont plus lentes. Pour les serveurs d'entreprise avec des bases de données énormes, vous ne voulez pas utiliser d'étiquettes.

Deuxièmement, les constructions ne créent pas automatiquement les étiquettes, bien que la valeur par défaut les étapes de construction comprennent une étape pour créer une étiquette.

Troisièmement, comme d'autres l'ont déjà mentionné, les étiquettes peuvent être déplacées ou supprimées, de sorte qu'elles sont beaucoup moins fiables que les jeux de modifications qui sont immuables.

dans l'ensemble, je vous recommande de ne pas utiliser d'étiquettes. L'alternative la plus simple est de simplement se souvenir du numéro de série de modifications pour vos constructions. Ou si vous voulez isoler différentes versions de version, vous devez créer des branches de version.

les étiquettes sont OK pour les petits systèmes, mais ne sont pas bon pour les grandes entreprises.

0
répondu Will Lennon - MSFT 2017-08-04 11:21:00