Disadvantages of a gated check-in in TFS

时间:2015-07-28 16:10:23

标签: tfs continuous-integration checkin

I've always worked with the Continuous Integration (CI) build in TFS. However, in my last project we started to use the gated check-in trigger.

Are there any disadvantages when using a gated check-in? Because if it prevents the team from checking in broken code, what's the purpose of a CI trigger?

2 个答案:

答案 0 :(得分:37)

门控签入是一种持续集成构建的形式。在TFS中,它创建一个 shelveset ,其中包含要验证的代码,然后运行该代码的构建。只有当代码成功构建并且所有已配置的单元测试都通过时,代码才会实际提​​交。

持续集成是不同的 - 在CI中,无论构建的结果如何,都会提交代码。如果由于提交的代码错误而导致CI构建失败,则代码仍然存在于源代码管理中,供所有人使用。

现在以意见为基础的部分: 如果您拥有大量具有不同技能/经验水平的开发人员,那么门禁签入非常棒,因为它可以防止破解代码进入源代码管理。缺点是它增加了代码被提交和代码可供其他人使用之间的时间,因此可能导致人们坐在他们的拇指周围等待构建成功完成的情况。

我建议使用门控办理登机手续作为权宜之计。如果你有大量的门禁签到版本失败,那么它就会完成它的工作,并防止错误的代码被提交。如果随着时间的推移,团队成熟并且门禁签入版本很少失败,那么它的用途就会减少,应该切换到持续集成并纠正失败的版本,而不是延迟关闭中的每个提交有机会出现问题。

答案 1 :(得分:2)

门控签入会使提交变得越来越困难。通常这是的事情,因为:

  • 在TDD中,成员应该能够通过失败的测试来推送提交
  • 将错误报告为测试失败非常有用
  • 在WIP(正在进行的工作)分支上进行合作时,成员应该能够进行肮脏的更改,以使其他人可以快速使用它们
  • 在进行重大更改时,让其他成员在花时间完成之前回顾未完成的工作会很有用
  • 许多人喜欢定期将不完整的工作作为快照/备份的形式
  • 当频繁在分支之间切换时(仅存储有限的帮助,尤其是新文件时),使未完成的工作非常有用
  • 质量检查不应有时间限制,但提交不应花费很长时间
  • 无论如何,代码质量检查应该在干净环境中进行,给定的本地环境很可能没有CI服务器那么原始
  • 类似地,质量检查通常应使用环境矩阵(不同的编译器版本,不同的浏览器,不同的OS等)来完成,而建立成本则最好投资于中央CI

因此,经过门控检查的方案是可以的:

  • 您的VCS使分支很难,或者您的公司不允许分支
  • 这个项目很小
  • 只有一名开发人员
  • 没有配置项
  • 只有特定的长寿命分支受到门的保护(但这不是CI的替代选择)