I am currently evaluating different source control solutions for work, and have a few questions about branching.
I have the basic understanding of how to branch, but i am unsure of how our build machine (CruiseControl.net) can get a branch to build it.
We have many projects, which are all relied appon by other projects (there are others to): Utilities > Data Access > Business Logic > Common GUI > ( Website | Desktop clients )
How do we structure the repository (Vault if that makes any difference) so that the build machine is able to:
A rough folder structure and/or an explanation on how to get from cruisecontrol would be great.
thanks
Edit:
To add some clarity, we intend to use the trunk for development, and then use a branch for each release.
The solution proposed by Mark works well if the projects have different release cycles (Project 1 has version 1.0 while Project 2 is already at 1.1). If all your projects are inter-dependants, I would start with a simple structure
My Big Project
|
+-- trunk
| |
| +-- utils
| |
| +-- data
| |
| +-- business
| |
| +-- gui (web)
| |
| +-- gui (swing)
|
+-- branches
|
+-- tags
That way, you're sure you have branched everything (the whole code) when you do a branch/tag. Otherwise, you always risk to miss one project when tagging.
Your build server would simply check out the trunk (with everything) or one tag/branch (also with everything) and build/install the release.
Once the utils package is stable, you can always "upgrade" it to a sibling project and use Maven/Ivy to manage the dependency.