我可以在 TFS 构建中控制 'Get Sources' 的任何选项吗?

Can I control any options for 'Get Sources' on a TFS build?

我有三个版本。

构建 A 构建我们的整个环境,构建 B 和 C 被克隆,但随后被剥离以仅构建特定部分和来自不同的分支。自从这样做以来,我们已经看到 Build A 的构建时间增加了三倍。每个版本都是 运行 tf vc workspace /delete

构建 C 也删除了它的工作区,但构建 B 没有。在存储库选项卡上,所有三个都将 Clean 设置为 false。

获取资源任务是否有 view/set 选项?什么会导致一个构建不执行此操作而其他两个构建执行此操作?

TFS 构建管道的获取源步骤中只有三个TFVC options

没有任何其他额外选项来控制获取源任务。

首先建议您检查Visual Studio构建任务中是否设置了Clean = true,这里需要取消勾选

如果您不选中“清理”选项并且构建始终刷新本地构建服务器上的工作区并且构建代理始终清理 TFVC 存储库。试试这个解决方案:完全擦除代理目录并重新启动,这可能会解决问题。另一种方法是重新配置构建代理并再次触发构建。

此外,您还可以在构建定义中禁用默认的获取源代码步骤。并使用您自己的脚本来获取 source/pull 文件以绕过工作区映射问题。如何使用,请关注:

我找到了答案。通过添加 System.debug = true 我能够查看工作区中的实际映射。然后我将其与构建存储库中所有映射的列表进行匹配。我发现,当我们映射一个文件夹及其子文件夹之一时,只会在工作区定义中创建父文件夹映射。

Get Sources 运行时,它会查找匹配的工作区名称,然后首先进行简单的计数检查。当存储库中的映射数量与工作空间中的映射数量不匹配时,它会失败并立即删除并重建工作空间。

通过删除子文件夹映射,我的 Get Sources 任务从 11 多分钟缩短到几秒。