让开发人员在提交前结帐(获取最新更改)

Make developers checkout (get latest changes) before commit

TFS 中是否有一个选项可以让开发人员在提交之前获得最新的更改?

我有一些开发人员不愿意更新(并检查他们的更改是否确实适用于当前版本),而只是提交。经常以这种方式破坏构建。

我们每 15 分钟 CI 构建一次,但这也是关于开发人员尽早使用其他开发人员的更改。

注意:我们正在考虑切换到 git 以解决这个问题。

这可能取决于一些因素,但最相关的可能是工作区设置(本地或服务器)。例如,服务器工作区 为您提供强制获取最新的选项。

当您使用服务器工作区时,您可以配置 Team Foundation 版本控制以在您检出文件时获取最新版本的文件。启用此选项后,签出行为类似于 Visual SourceSafe。更多详情请参考link:Enable Team Foundation Version Control to Get the Latest Files on Check-Out

如果您必须使用本地工作空间,那么正如 jessehouwing 所建议的那样,最好的方法是使用 自定义签入策略 。具体操作方法请参考这篇博客:Creating TFS Custom Check-in Policy

您可以将构建配置为真正的 CI 构建,但它不会阻止人们在获取最新版本之前签入。它应该检测谁破坏了哪个构建。有些人甚至会将 Gated 构建配置为在没有通过构建的情况下甚至不签入。我个人不喜欢这个,因为它会减慢集成速度,而且通常会大大降低速度。

要捕获您想要捕获的案例,您可以实施自定义签入策略,将其注册到 TF​​S 并将其安装到您组织中的所有 Visual Studio 和 Team Explorer Everywhere 安装。创建策略非常简单:

而且您必须构建两者,因为签入策略的配置是通过 Visual Studio 进行的,并且需要 C# 实现。 基本上,您会查询本地工作区版本并将其与服务器上的最新工作区版本进行比较。可选范围仅限于更改的文件。然后,您的开发人员应该获取最新版本、重建、重新运行所有单元测试并尝试再次签入。这可能会引起另一次碰撞。

我在上一个非常相似的问题中写了更多关于这个主题的指南。我怀疑你的问题比简单检查工具更糟糕,这是一个人的事情,人们可能并不真正关心别人在做什么,以及他们没有进行足够的沟通来预防这些类型的冲突。

另请参阅:

我们通常使用门控构建,因此只有在编译时才会签入更改,FxCop 很高兴并且单元测试是绿色的。我们已经尝试了很多年 CI 触发测试和分析,但学习是 信任是好的,但门更好 .

但这确实需要构建和验证时间相当短,这样集成才不会减慢。