在开始之前让开发人员结帐(获取最新的更改)

时间:2016-12-06 12:42:35

标签: git tfs version-control policy tfvc

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

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

我们每15分钟就有一个CI版本,但这也是开发人员提前使用其他开发人员的更改。

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

3 个答案:

答案 0 :(得分:2)

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

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

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

我在一个非常类似的上一个问题中就这个主题撰写了更多指导。我怀疑你的问题比简单检查工具还要糟糕,人们可能并不真正关心别人在做什么以及他们在哪些方面没有足够的沟通来预防这些冲突。

另请参阅:Avoid accidental overwrite between different developers upon checkin or merge

答案 1 :(得分:1)

这可能取决于一些事情,但最相关的可能是工作区设置(本地或服务器)。例如,服务器工作区为您提供了强制执行get latest的选项。

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

如果您必须使用本地工作计划,那么就像 jessehouwing 建议的那样,最好的方法是使用自定义签入政策。关于如何操作,请参阅此博客:Creating TFS Custom Check-in Policy

答案 2 :(得分:1)

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

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