CruiseControl.NET的过滤源控制提供程序在使用Mercurial时未检测到修改

时间:2010-08-17 00:20:34

标签: mercurial cruisecontrol.net

我们正在转向Mercurial。我们的存储库有许多不同的项目,因此我们使用过滤后的源代码控制,这样只有对项目文件的更改才会触发构建。我在ccnet.log中看到CruiseControl正在从Mercurial中正确地获取修改列表,但它始终报告“未检测到任何修改”。我想我可能会指出错误或不正确的模式。

这就是我在日志中看到的内容:

2010-08-12 18:25:41,305 [BuildAndTools:DEBUG] Modification Modification: (Type=Changeset,FileName=Build/App.targets,FolderName=,ModifiedTime=8/12/2010 6:16:42 PM,UserName=user,ChangeNumber=5640629ec7b5,Version=5640629ec7b5,Comment=Making a change to see if it triggers a build.,Url=,IssueUrl=,EmailAddress=user@example.com) was not accepted by the filter specification.
2010-08-12 18:25:41,305 [BuildAndTools:INFO] No modifications detected.

这是路径过滤配置:

<sourcecontrol type="filtered">
  <dynamicValues />
  <exclusionFilters />
  <inclusionFilters>
    <pathFilter>
      <caseSensitive>False</caseSensitive>
      <pattern>Build\**\*.*</pattern>
    </pathFilter>
  </inclusionFilters>
</sourcecontrol>

我需要做些什么才能让CruiseControl.NET看到修改?

更新:此问题已在CruiseControl.NET 1.6版中修复。

1 个答案:

答案 0 :(得分:2)

事实证明这是Mercurial源代码管理插件中的一个错误。它通过变更集而不是文件进行更改(变更集中的所有文件都组合在一起,形成一个空格分隔的列表)。这不是过滤后的源代码控制提供程序的工作格式,因此它从不会注意到任何修改。

我修复了问题,创建了一个JIRA item to track the issue,并将我的代码更改附加到它。