【问题标题】:Make developers checkout (get latest changes) before commit在提交之前让开发人员签出(获取最新更改)
【发布时间】:2017-04-21 02:40:12
【问题描述】:

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

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

我们每 15 分钟进行一次 CI 构建,但这也涉及开发人员及早使用其他开发人员的更改。

注意:我们正在考虑改用 git 来解决这个问题。

【问题讨论】:

  • 您可以制定自定义签入策略来强制执行此操作。根据同一工作区的服务器版本检查本地工作区版本。该政策应该可以帮助您入门:github.com/jessehouwing/tfstools
  • 嗯,我们主要使用 Java - Eclipse 和 TEE 插件。该链接是 VS 的 C# 解决方案。
  • 您也可以在 java 中构建检查策略。我怀疑您需要同时构建 C# 和 Java 以实现可配置性。 dotnetcurry.com/visualstudio/800/…
  • 如果每 15 分钟运行一次构建,则它不是 CI 构建。每次提交都会运行 CI 构建。

标签: git tfs version-control policy tfvc


【解决方案1】:

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

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

如果您必须使用本地工作场所,那么就像 jessehouwing 建议的那样,最好的方法是使用 自定义签入策略。关于怎么做,请参考这个博客:Creating TFS Custom Check-in Policy

【讨论】:

  • 但可以在不先签出的情况下提交。
  • @PaulVerest 好吧,如果是这样,就没有这个内置选项。此外,丹尼尔是对的。 CI 构建是如果您希望在有人签入代码时运行构建。如果没有 15 分钟的缓冲时间,您的开发人员应该在源代码控制中提交后获得破坏性构建信息。如果一个人经常遇到这样的问题,他会记得得到最新的。这也是一个解决方案。
【解决方案2】:

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

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

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

我在之前的一个非常相似的问题中就该主题编写了更多指南。我怀疑您的问题比简单检查工具更糟糕,这是一个人的问题,人们可能并不真正关心其他人在做什么,并且他们没有足够的沟通来预防这些冲突。

另见:Avoid accidental overwrite between different developers upon checkin or merge

【讨论】:

  • 好吧,我希望能找到一些 TFS 配置,但唯一的办法就是做一些插件。
  • 我理解你的愿望。但不幸的是,没有内置这样的功能。
【解决方案3】:

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

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

【讨论】:

    猜你喜欢
    • 2021-07-29
    • 2015-07-10
    • 2021-01-17
    • 1970-01-01
    • 1970-01-01
    • 2019-12-01
    • 2020-07-21
    • 2017-04-22
    • 1970-01-01
    相关资源
    最近更新 更多