CASA Private Branches

Page Status: Incomplete Draft


Private branches allow CASA developers to work alone or in a small group for an extended time on code that is not ready for integration with other CASA code.

TODO: Discourage use of private branches by listing alternatives and explaining their benefits and costs.

Private branches may also be used for code that belongs in change control, but does not belong in the CASA source tree.

Types of Private Branches


Personal branches are used by one person for code that is not ready to be checked in to another branch.


Project branches are used by two or more developers to collaborate on code that is not ready to be checked in to another branch.

Full branches

Full branches contain all of the code in CASA. Working on a full branch is identical to working on active, test, a stable, or a release branch, except all commits happen on the private branch.

A full branch has the advantage and disadvantage of completely isolating developers from all activity on the source branch. Developers must explicitly merge changes from the source branch to the full private branch to pick up changes to code they are not modifying. This is necessary to ensure all changes work with all updates on the source branch before merging changes from the full private branch back to the source branch.

Because of the amount of code on a full branch and the cost of merging code between the source branch and the full branch, this is the most expensive option.

TODO: Describe how to create a full branch.

Sparse branches

Sparse branches contain a just the subset of CASA that is being changed. They use Subversion external references to flesh out the rest of the code tree for building and testing.

See for an example. This sparse branch contains only a subset of casa/active/code/synthesis/ that Sanjay is using to refactor the synthesis module.

When is checked out, Subversion checks out synthesis/implement and synthesis/CMakeLists.txt from the branch, and the rest of CASA from active.

This has the advantage over full private branches that developers only have to explicitly merge changes from the subset of the source branch that is duplicated on the sparse private branch before merging their work back to the source branch.

TODO: Describe how to create a sparse branch.

TODO: Describe good practices for using branches to minimize divergence between the source branch and private branch.

-- ScottRankin - 2011-06-23
Topic revision: r5 - 2011-11-17, ScottRankin
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding NRAO Public Wiki? Send feedback