Tuesday, October 19, 2004

High-level Best Practices in SCM

Link

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