Search code examples
build-automationcruisecontrol.netnantbranchsourcegear-vault

source control building a branch


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:

  1. Build the trunk
  2. Build the 'latest' branch

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.


Solution

  • 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.