Yes, I have exactly that layout.
The location of modules in SVN can be calculated from Repository URL of parent
project, location of Root POM inside the parent project and content of <module/>
tag.
e.g. parent.pom
Repository URL: svn://svn.company.net/Project
Root POM: general/1.0.0/pom.xml
<modules><module>../../client/${uam.version}/pom</module></modules>
Module POM location: svn://svn.company.net/Project/client/1.0.0/pom
Or the hudson can act as now:
Check out the whole project structure (existing step).
Locate all modules (existing step).
Calculate filters (new step).
And then update (check for update) according calculated filters.
There is one complication - detection of new modules. Now it is happening
automatically - but with filters you will need to recalculate it on changes in
modules structure.
But at least the manual filters (e.g. ignore all changes in *\branches*) will
help.
Could you illustrate your SCM structure a bit more? Does it work like:
/
moduleX/trunk/
tags/
branches/
moduleY/trunk/
tags/
branches/
... ?
If so, I don't understand how looking at <scm> in each module helps. I mean, for
Hudson to look at POM, it needs to first check out, so it's too late.