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 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 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.
for an example. This sparse branch contains only a subset of casa/active/code/synthesis/ that Sanjay is using to refactor the synthesis module.
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.