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 locally, and have created a [JIRA item to track the 
issue](http://jira.public.thoughtworks.org/browse/CCNET-1947).  My code changes 
are attached.

I've also created a question about this [on Stack 
Overflow](http://stackoverflow.com/questions/3498425/cruisecontrol-nets-filtered-source-control-provider-not-detecting-modifications).

     <:> Aaron


From: [email protected] [mailto:[email protected]] On 
Behalf Of Jensen, Aaron
Sent: Thursday, August 12, 2010 6:42 PM
To: [email protected]
Subject: [ccnet-user] Mercurial Not Detecting Modifications When Using Filtered 
Source Control

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=ajensen,ChangeNumber=5640629ec7b5,Version=5640629ec7b5,Comment=Making
 a change to see if it triggers a 
build.,Url=,IssueUrl=,[email protected]) was not accepted by the 
filter specification.
2010-08-12 18:25:41,305 [2010C-Dev-BuildAndTools:INFO] No modifications 
detected.

And this is what the configuration for this process looks like:

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

I would think the build would trigger based on the first pathFilter's pattern 
element, but it doesn't.

Are my patterns wrong?  Is CruiseControl not working correctly?

    <:> Aaron

Reply via email to