I have previously used CruiseControl for continuous integration in a feature branching environment (trunk, branch1, branch2) and had many builds on each branch. All configuration files were stored in SVN and merged with forward and reverse integration. So any build changes on a branch only applied to that branch until it was merged into another branch where the exact configuration was applied to that branch (after any possible merge conflicts were resolved).
I would like to do the same in TeamCity, but it doesn't look like there is any provision for doing this. I see that you can set up templates and provide a vcs root parameter that will allow the same build across many branches but any changes to the template will apply immediately across all branches.
As a work around I have noticed the entire project configuration is stored in an xml file (project-config.xml) under the config folder. I am coping this file and running a script on the file to add a prefix of the branch name to the all the ids in the xml file, e.g. ‘branch1_bt4’. Then I commit to the branch in SVN, and do the same for trunk and branch2. Then I copy these files back to TeamCity. Then before doing a Reverse integration from branch1 to trunk I run a script to convert all the ‘branch1_’ prefixes to ‘trunk_’ prefixes, merge the 2 files (branch1 and trunk) and copy the new trunk file back to TeamCity config folder. That way I can effectively have the same ids across different branches which can be merged together.
I just want to be able to merge configuration during a reverse integration, am I going about it the wrong way or is there something in TeamCity that will give me this functionality?