TFS如何选择与构建关联的签入?

时间:2016-10-26 20:33:30

标签: tfs tfsbuild tfs2015

我们的构建通常有一些混乱的工作项和与它们相关的提交,我无法分辨TFS如何确定要添加的内容。我们正在使用TFS 2015更新3和TFVC。

当构建运行时,它从TFVC的分支和文件夹中的某个位置获取代码。通常,像“root \ dev \ src \ component name”这样的东西,我们避免在我们的存储库中获取所有代码,并且我们已设置CI运行,以便此文件夹中的任何更改都将导致CI构建运行。

我们还运行每日构建,运行更多测试并创建TFS版本管理使用的版本包。我希望在为此构建设置存储库时定义的文件夹内的代码的任何更改都包含在构建的关联更改集中。我还希望在这些分支之外签入的任何更改都不会关联。但这种情况并非如此。我们看到整个项目的提交。

有谁知道这应该如何运作?

我不确定这是否应该包含在问题或答案中,但我已经找到了一些其他信息,这要归功于下面答案中提供的提示。

看来源设置将采用存储库设置的映射文件夹之间的公共根,所以如果我有2个文件夹$ / Relo / Dev / B1 / src / Claims.Services和$ / Relo / Dev / B1 / src / PSScripts它将公共根$ / Relo / Dev / B1 / src作为源设置,并在构建中包含该文件夹的任何更改。谁能证实这一点?当然那不是我想要的。在构建定义的History选项卡中,如果我查看diff,我可以在json中看到一个字段“defaultBranch”,它似乎是控制它的值,有没有办法直接更新这个字段?

2 个答案:

答案 0 :(得分:1)

TFS根据构建定义和上次成功构建中的源存储库映射(Build vNext)确定应将哪些变更集映射到构建。

因此,您将看到一个变更集列表,其中包含在任何映射文件夹的最低公共基础中提交的文件,包括所有后代,因为最近的成功建立。每当你获得一个成功的构建(我希望它发生的次数多于失败的那些;-)),列表将缩短并仅显示最后一次登记。

下面的示例映射将导致对$ / Relo / Dev / B1 / src以下的任何内容进行任何更改集(因为它是最低的公共基数):

  • $ / RELO /开发/ B1 / SRC / Claims.Services
  • $ / RELO /开发/ B1 / SRC / PSScripts

类似地,它会将所有相关工作项提取到上述变更集。

这是应该发生的事情。如果你看到别的东西,我会仔细看看构建定义的Repository Mappings或Source Settings。

答案 1 :(得分:0)

@Noel - 我猜你正在使用vNext构建而不是XAML构建。或者您使用的是XAML和vNext的混合?

通常,计划的TFS构建将关联在同一构建的上次成功运行中未关联的所有更改。

我建议您再次检查CI构建和每日构建的源文件夹位置是否相同?