Baselines and their uses
A baseline is a snapshot of a component at a particular time. It comprises the set of versions that are selected in the stream at the time the baseline was made. When a new stream is configured, baselines are used to specify which versions are to be selected in that stream. Baselines are immutable so that a particular configuration can be reproduced as needed and streams that use the same set of baselines are guaranteed to have the same configuration. Therefore, the set of versions included in a baseline cannot be modified.
In the figure, baseline BL1 is the predecessor of baseline BL2 and baseline BL2 is a descendant of baseline BL1. When baseline BL2 was created, there were new versions of prog.c, msg.h, and util.h, but for the files lib.c and num.h, baseline BL2 falls back to the baseline BL1 versions. Similarly, baseline BL3 is a descendant of baseline BL2; and baselines BL1 and BL2 are predecessors of baseline BL3. Baseline BL3 captures changes made after baseline BL2 was created, but it uses the baseline BL1 version of num.h and the baseline BL2 version of msg.h. Because version 4 of msg.h is checked out, it is not included in baseline BL3.
In the relationship among baselines, a descendant contains its predecessors so that, for example, all changes captured in baseline BL2 are also in baseline BL3.
The relationship between a baseline and a component is very similar to the relationship between a version and an element. For example, baselines exist in streams, but versions exist on branches. Both baselines and versions have predecessors.
- Record work done and mark milestones.
- Define stream configurations.
- Provide access to delivered work.