High-level Best Practices in SCM
When deploying new SCM (software configuration management) tools, implementers sometimes focus on perfecting fine-grained activities, while unwittingly carrying forward poor, large-scale practices from their previous jobs or previous tools. The result is a well-executed blunder. This paper promotes some high-level best practices that reflect the authors' experiences in deploying SCM.
Workspaces, where developers build, test, and debug.
- Don't share workspaces.
- Don't work outside of managed workspaces.
- Don't use jello views.
- Stay in sync with the codeline.
- Check in often.
Codelines, the canonical sets of source files.
- Give each codeline a policy.
- Give each codeline an owner.
- Have a mainline.
Branches, variants of the codeline.
- Branch only when necessary.
- Don't copy when you mean to branch.
- Branch on incompatible policy.
- Branch late.
- Branch, instead of freeze.
Change propagation, getting changes from one codeline to another.
- Make original changes in the branch that has evolved the least since branching.
- Propagate early and often.
- Get the right person to do the merge.
Builds, turning source files into products.
- Source + tools = product.
- Check in all original source.
- Segregate built objects from original source.
- Use common build tools.
- Build often.
- Keep build logs and build output.
Process, the rules for all of the above.
- Track change packages.
- Track change package propagations.
- Distinguish change requests from change packages.
- Give everything an owner.
- Use living documents.
0 Comments:
Post a Comment
Subscribe to Post Comments [Atom]
<< Home