Here's my point of view to this problem.
I think that solution for you is using Build configuration template + parametrization in VCS root.
We have about 20 build configurations (1 configuration = 1 branch), made only by two templates and one vcs root. All common stuff for configuration is kept in template. Only few specific params are in configuration itself and you seth them on creation of configuration from template. One of them is branch name which is highly related to configuration name in my case.
Templates are
- Continous integration template - where you only want to check projects are building
- Release template - Build plus release generation
VCSroot points only to root of source control. Branch parameter of vcs root is set to custom branch parameter that build configuration inherits from build configuration template.
We have branches structured like this
-Master
-Development
-Releases__3.4.1
|_3.4.2
|_3.4.3
Master and development are using Continuous integration template, and each new release branch is using Release configuration template. For me the proces of creating new configuration for 3.4.4 branch is like this:
- Create new configuration
- Select template
Choose: Release
- Enter name of configuration
Enter: 3.4.4
- Save
- Run build
Point is that Branch name parameter in Release template is like this
%BranchPath%=Release/%ConfigurationName%
For Continuous integration template it would be
%BranchPath%=%ConfigurationName%
Further in VCS root branch is set to %BranchPath% passed in to it from configuration, so VCS can work with both templates, and all 20 configurations
And thats all.. :) Hope it somehow helps