我正在尝试提出有关使用 TFS 源代码控制的最佳实践。现在,每当我们进行构建时,我们都会用版本号标记签入 TFS 的文件。这种方法比简单地签入文件并在评论中包含版本号是更好还是更差?然后,如果需要,您可以使用变更集返回吗?或者标签仍然更加通用?
谢谢!
它们有两个不同的用途,ChangeSets 是指文件实际发生更改并且您希望永久记录该更改。标签标记文件的某个版本,以便您可以轻松地返回到该点。除非您的构建实际上更改了源代码控制下的文件,并且您希望记录这些更改。你应该贴标签。
此外,标签的资源密集程度要低得多。您可以在同一版本的文件上拥有多个标签。
您应该标记构成您的构建的源文件的版本。如果您使用的是 TeamBuild,它会自动为您执行此操作。它结合了构建定义的名称、日期和构建号。所以你不需要做任何事情。
您的另一种选择不是很传统,需要大量不必要的工作。如果我理解正确,您将在构建过程中检查您的源文件,然后使用签入注释中指定的版本号将它们重新签入。正如 Alex 提到的,就您的构建过程和源代码控制存储库而言,这非常耗费资源。此外,如果版本信息嵌入在注释中,您将如何获取特定版本的源文件?这将非常困难,您必须坐下来编写自己的应用程序,该应用程序使用 TFS 源代码控制 api 通过在签入注释中搜索版本号将源文件下载到工作区。这会造成不必要的复杂性和令人头疼的问题。
如果您改用标签,则可以在 VS IDE 中按标签获取以下载构成该标签的源文件。您甚至可以告诉 TeamBuild 在构建自动化期间使用标签而不是下载最新的源文件。这样您就可以轻松构建应用程序的早期版本。使用标签,如果有代码更改,您还可以将以后的变更集应用于现有标签,只需获取该标签,然后获取特定的变更集,然后执行快速标签或创建一个全新的标签。
标签非常强大,使用方便,是 TFS 的一部分。与其想出需要大量努力才能使其工作和维护的自定义解决方案,不如尝试使用现有的解决方案。
现在,每当我们进行构建时,我们都会用版本号标记签入 TFS 的文件
你不需要这样做。TFS 可以通过多种方式引用代码库的状态,其中标签确实是其中之一 - 但构建甚至变更集也是如此。Get Specific Version...
您可以通过执行 a并检查Type
下拉菜单中的选项来查看重建特定时间点的可用方法:
Changeset
Date
Label
Latest Version
Workspace Version
Changeset
允许您在任何变更集之后获得;Date
很明显;Label
也是,除了自动构建*创建标签(Label
从此下拉列表中选择,然后在Find Label
对话框中查看)。
*我认为它是自动的!除非这是我们现在在我所在的地方专门设置的东西……
StackOverflow 不会让我评论上面的答案,所以我把它写成一个新的“答案”。我想澄清上面列出的一些误解。
首先,使用 TFVC 标签比使用变更集更耗费资源。多很多。Branch、Merge 和 Get by Label 等命令速度较慢。对于拥有庞大数据库的企业服务器,您不希望使用标签。
其次,构建不会自动创建标签,尽管默认构建步骤包括创建标签的步骤。
第三,正如其他人已经提到的,标签可以移动或删除,因此它们的可靠性远低于不可变的变更集。
总的来说,我建议你不要使用标签。最简单的替代方法是只记住构建的变更集编号。或者如果你想隔离不同的发布版本,你应该创建发布分支。
标签适用于小型系统,但不适用于大型企业。