TFS:标签与变更集

时间:2009-06-05 15:21:36

标签: tfs label changeset

我正在尝试提出有关使用TFS源代码控制的最佳实践。现在,无论何时我们进行构建,我们都会使用版本号标记检入TFS的文件。这种方法比简单地检查文件并在评论中包含版本号更好还是更差? 您是否可以根据需要使用变更集或标签仍然更通用?

谢谢!

4 个答案:

答案 0 :(得分:35)

它们有两个不同的用途,ChangeSets是文件实际更改后的状态,并且您希望保留该更改的永久记录。标签标记某个版本的文件,以便您可以轻松返回到该点。除非您的构建实际上更改了源代码管理下的文件,并且您希望记录这些更改。你应该贴上标签。

此外,标签的资源密集程度要低得多。并且您可以在同一版本的文件上使用多个标签。

答案 1 :(得分:7)

您应该标记构成构建的源文件的版本。如果您正在使用TeamBuild,它会自动为您执行此操作。它结合了构建定义的名称,日期和构建号。所以你不需要做任何事情。

您的其他选择不是很传统,需要大量不必要的工作。如果我理解正确,您将在构建过程中检出源文件,然后使用签入注释中指定的版本号重新检入它们。这就像Alex在构建过程和源代码控制存储库方面提到的资源非常密集。此外,如果版本信息嵌入在评论中,您将如何获取特定版本的源文件?这将是非常困难的,您将不得不坐下来编写自己的应用程序,使用TFS源代码控制API将源文件下载到工作区,方法是在签入注释中搜索版本号。这会造成不必要的复杂性和麻烦。

如果您使用标签,则可以在VS IDE中执行get by标签以下载构成该标签的源文件。您甚至可以告诉TeamBuild使用标签,而不是在构建自动化期间下载最新的源文件。这样您就可以轻松构建应用程序的早期版本。使用标签,如果代码发生变化,您还可以将更改后的变更集应用于现有标签,只需获取该标签,然后获取特定变更集,然后进行快速标签或创建全新标签。

标签功能强大,使用方便,是TFS的一部分。而不是提出需要付出很多努力才能使其工作和维护的自定义解决方案,而只是尝试使用已有的解决方案。

答案 2 :(得分:2)

  

现在,无论何时我们进行构建,我们都会使用版本号

标记检入TFS的文件

您不需要这样做。 TFS可以通过多种方式引用代码库的状态,其中标签确实是一个 - 但构建甚至变更集也是如此。您可以通过执行Get Specific Version...并检查Type下拉列表中的选项来查看重建特定时间点的可用方法:

Changeset
Date
Label
Latest Version
Workspace Version

Changeset允许您在任何变更后获得; Date很明显; Label也是如此,除了自动构建*创建标签(从此下拉列表中选择Label然后查看Find Label对话框)。

*我认为这是自动的!除非是我们特意在那里设置的东西......

答案 3 :(得分:0)

StackOverflow不允许我对上面的答案发表评论,因此我将此作为一个新的答案"。我想澄清一下上面列出的一些误解。

首先,使用TFVC标签比使用更改集更耗费资源。多很多。诸如Branch,Merge和Get by Label之类的命令较慢。对于拥有大型数据库的企业服务器,您不希望使用标签。

其次,Builds不会自动创建标签,但默认的构建步骤包括创建标签的步骤。

第三,正如其他人已经提到的那样,标签可以被移动或删除,因此它们比不可变的变更集更不可靠。

总的来说,我建议你不要使用标签。最简单的替代方法是只记住构建的变更集编号。或者,如果要隔离不同的发行版本,则应创建发布分支。

标签适用于小型系统,但对大型企业不利。