CruiseControl.NET's Filtered Source Control Provider Not Detecting Modifications When Using Mercurial
We are in the process of switching to Mercurial. Our repository has a number of different projects, so we are using the filtered source control so that only changes to a project’s files trigger a build. I’m seeing in my ccnet.log that CruiseControl is correctly grabbing the modification list from Mercurial, but it always reports "No modifications detected." I think I might be specifying the wrong or an incorrect pattern.
This is what I see in the log:
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.
And this is the path filtering configuration:
<sourcecontrol type="filtered">
<dynamicValues />
<exclusionFilters />
<inclusionFilters>
<pathFilter>
<caseSensitive>False</caseSensitive>
<pattern>Build\**\*.*</pattern>
</pathFilter>
</inclusionFilters>
</sourcecontrol>
What do I need to do to get CruiseControl.NET to see a modification?
Update: This issues was fixed in CruiseControl.NET version 1.6.
It turns out this is a bug in the Mercurial source control plug-in. It gets changes by changeset, instead of by file (all the files in a changeset are grouped together into a space separated list). This is not the format the filtered source control provider works, so it never notices any modifications.
I fixed the issue, created a JIRA item to track the issue, and attached my code changes to it.
精彩评论