2010-03-02 61 views
1

一点背景首先...TFS 2008:有关汽车的问题构建,标签和普通版本

我设立了一个版本为我们的项目目前只开发分支编号系统,但我们现在是走向我们的第一次部署。我们正在使用TFS,并且我们每晚都在我们的开发分支上使用。

我们可能要这样做的方式是,当我们为发布做好准备时,我们将一个分支关闭,并将其称为1.x.这应该是一个测试分支:我们测试它,修复它(然后合并回dev),再测试一下,当它完好时,我们从1.x分支中取出另一个分支并将其称为1.0。这个分支被部署到生产环境中。生产中的任何修复都将被提交给1.x,并进行测试,然后创建一个新的分支1.1。

我的问题是与1.x分支的测试。测试之前,分支将被锁定,原因很明显。我的问题是,质量保证要求对“版本号”进行一轮测试,如果测试失败,下一轮测试将针对新的“版本号”。我们的开发人员希望将“版本号”与版本绑定,并且测试可以迭代该版本......所以这里有冲突。

我的第一个想法是使用内部版本号作为代码测试的时间点。当提交新版本进行测试时,1.x分支再次被锁定,构建将被启动,并且生成的VSTS编号将成为“V1.0的释放条件1”。将RC映射到构建版本,我们可以在电子表格中手动执行...

...然后有人提到标签,并且应该在测试之前将代码锁定为labled并构建。我之前从未使用标签,并刚刚阅读过构建本身在TFS中创建标签。

我现在对什么是最好的方式去这里感到困惑。是否足够使用发布候选版本号?手动标记在这里是否有任何用途(我能看到的唯一好处是我们可以给出它自己的名称和描述)?我可以告诉TFS不要在运行构建时创建标签,而只需在重要时间点完成所有标签(例如,并非每个构建都将成为发布候选)?如果是这样,每次构建一个坏主意后都不会创建一个标签,那么标签给我什么?

我想我感到困惑的地方changsets,内部版本号/名称和标签都适合彼此...

这是一个很宽泛的问题,但它的那些我不是100%肯定者之一要问什么。任何帮助赞赏。

回答

2

...然后有人提到标签,并且代码应该在测试之前锁定并标记。我之前从未使用标签,并刚刚阅读过构建本身在TFS中创建标签。

你读过的内容是正确的。有了TFS(不像SourceSafe),服务器动作构成了一个“已知的时间点”,稍后可以参考。你可以通过做一个Get Specific Version...并查看Version下拉列表来看看我的意思:在TFS 2005中,我看到的相关列表是Changeset,Date,Label。现在,正如您所说的,每个构建都会自动创建一个标签。这意味着在将来的任何时候都可以像任何给定的变更集之后那样精确地检索代码;在任何给定的日期;以及何时应用任何特定标签,从而包括何时完成构建。

结果是,您可以使用自己的标签或不使用自己的标签,完全根据您自己的判断 - 无论如何,检索给定代码快照的能力都将存在。我不会建议试图阻止TFS为每个版本生成一个标签(我不知道这是否可能) - 标签无需花费任何代价。

1

您的分支1.x是一个整合branch,其中将包含许多增量小的演变。
锁定分支不是答案。

设置一个标签(专门命名为“QA测试”,并锁定以便不能移动该标签)是向QA团队发出信号的常用方式,他们可以构建自己的工作区并检索该确切标签。
然后,他们可以对代码开始他们的测试。
Creating a label后每个版本并不总是可行的,因为不是每个建设旨在通过QA测试。

+0

“移动标签”,这是什么究竟意味着什么呢?我得到的印象是,TFS中的标签并不构成“时间点”,而是可以在标签制作完成后对标签代码进行更改。我们希望在这种情况下标注为“时间点”...这就是你为什么建议是否锁定标签? – MrLane 2010-03-04 01:08:16

+1

@mrlane:“移动标签”:某些VCS允许移动标签以引用另一个提交。在TFS中,由于标签可以被编辑(http://stackoverflow.com/questions/545785/how-do-i-figure-out-which-changeset-a-label-in-tfs-was-applied-to), **如果用于QA,则不应对其进行编辑,否则QA不确定它正在测试**。因此,我的'标签锁定'评论,即使你不能真正锁定标签在TFS(只有文件) – VonC 2010-03-04 07:25:30