If you have repeating sections of config in ccnet.config you can separate out config blocks into separate files. This is particularly useful for servers with multiple build projects or streams.
For Example on NRO we have three projects on our build server separated out into source.xml,uat.xml and live.xml.
The ccnet.config looks like this:
<!DOCTYPE cruisecontrol [
<!ENTITY Source SYSTEM "file:Source.xml">
<!ENTITY Live SYSTEM "file:Live.xml">
<!ENTITY UAT SYSTEM "file:UAT.xml">
<!ENTITY email SYSTEM "file:email.xml">
]>
<cruisecontrol>
&Source;
&UAT;
&Live;
</cruisecontrol>
This makes smaller and easier to manage config files, especially for turning streams on and off.
You might laso notice email.xml. As all the projects share the same email settings they are stored in a separate file and referenced as a publisher in the projects:
<publishers>
&email;
</publishers>
Bit of a gotcha, all references to snippets of config must be made in ccnet.config