SCM strategy (UCM flavour)
The Software Configuration management strategy which PUCM is designed to support is a pretty standard UCM basic strategy.
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:
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.
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.
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:
- 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.