如何在TFS中控制部署

时间:2015-10-15 17:37:42

标签: tfs branch

我在Team Foundation Server中有3个解决方案。分支到QAS的Prod分支到DEV。

我在DEV分支中完成所有工作,并检查对此分支的任何更改,当我在此处检查时,我将ChangeSet与TFS中的工作项相关联。让我们说我有4个ChangeSet(ChangeSet#101,102,103,104),此时每个都与不同的bug相关联(Bug#1,2,3和4)。

然后我将项目的DEV分支部署出来进行内部测试。一旦验证完毕,我就将DEV分支合并到QAS中,然后将所有这些更改检查为ChangeSet#104。

现在这里是我遇到问题的地方。在外部测试之后,Bug 1和2已经确认并准备好部署到Prod,但是bug 3和4都没有。如果我进入Prod分支并从QAS合并回到prod,它将从QAS获取所有更改并将它们推入prod分支。但这不是我想要的,因为它会给我错误的代码3和4。我真正想要的是获取来自ChangeSet 101和102的相同更改,但我不能说只是拉出那些变化,因为那些是从DEV到QAS,然后它们变成了一个ChangeSet。

所以我的问题是如何以某种方式获得Environment / ChangeSet设置,这样我就可以把我想要的部分带来。

1 个答案:

答案 0 :(得分:1)

如果不使QA的工作失效,你真的无法做到这一点。通常,发布是全有或全无。每次更改代码时,都会使先前完成的所有测试无效。这可以通过单元和集成测试来提供一些防止回归的保护措施来缓解,但从根本上说,代码发生变化时,意外情况可能会中断。在架构不佳的意大利面条系统中情况更糟,但即使是设计最好的系统也存在风险。

我们假设您每周发布一次。您在该时间范围内修复了4个错误并将所有错误传递给QA。

QA能够验证其中2个错误是否已修复。如果删除未经过验证的其他2个错误修正,会发生什么?

  1. 无。错误和代码更改实际上是完全正交的。呼。
  2. Bugfix 1和Bugfix 3的组合实际上修复了Bug Omega,你甚至不知道它存在。删除Bugfix 3 引入了不同的错误。质量保证不会抓住它,因为只要他们担心他们测试过,一切正常。
  3. 如果QA通常无法在为发布分配的时间内完成对发布的测试,那么您就会遇到需要识别和删除的瓶颈。