ClearCase‎ > ‎UCMpedia‎ > ‎

Best practice

SCM strategy (UCM flavour)

The Software Configuration management strategy which PUCM is designed to support is a pretty standard UCM basic strategy.
If you know ClearCase UCM well, you may object to the phrase pretty standard UCM basic strategy and claim that "there exists not such thing". And you are probably right; not much is standard in UCM. It's a world full of opportunities and choices.

Here are the highlights of what we see as a Praqmatic SCM strategy in UCM.
  • Read, understand and be inspired by the IBM white paper: "Best practices for using composite baselines in UCM".
  • Use bootstrap projects to create structural composite baselines in which:
    • Only rootless components are allowed to act as parents, all rooted (regular components) are all leaves or end-nodes in the graph structure.
    • Make sure the structure has a single-top-component.
    • Always introduce new modules and remove old modules in the bootstrap project first - then rebase other streams to the new structure.
  • Always only use the single-top-component as foundation for any stream.
  • Always create all baselines on the single-top-component, and let the structure automatically maintain baseline creations on the lower levels.
  • Avoid ever overriding the baselines in the foundation manually - only change foundation through plain vanilla rebases.
  • Use the promotion levels on the baselines to actually mean something
    • PUCM assumes that you don't change the standard promotion levels in implemented in UCM: INITIAL, BUILT, TESTED, RELEASED and REJECTED
  • Use a mainline UCM project to hold your releases
  • Use one or several project oriented UCM projects (as you would use 'trunk' in other VCS's)
  • Consider using UCM 'stable-projects' to harvest healthy builds for further tests/massage and release candidates for mainline.
  • The stream strategy imagined used is something like this:
    Structure for the entire product is created and maintained in a bootstrap project. A mainline projects uses this structure as foundation and one or more projects created individual UCM projects where they maintain different parts (sub systems) or scopes (release, feature, refactoring, variants, etc.). Some of these projects (the larger ones) may have stable streams where they harvest (UCM deliver) healthy builds and keep them here for further validation or test. Stuff is delivered from either the project related streams or the stable streams back to the mainline where all official and semi-official releases are done from.