The update operation uses the baseline as a way of saying "start from here." Therefore, if you use the standard process rules to set up the baseline to contain projects from multiple components or not to contain all the projects for a release, your baseline cannot be updated properly. Using the standard process rules in this way is supported, but you must customize process rules for it to work.
The next two examples show how to set up a baseline correctly, while the last example shows a baseline that was set up incorrectly. Using baselines correctly can improve performance when you update your projects.
The baseline is selected by its release; therefore, it is important to have projects with a consistent release in the baseline. The projects in the baseline are used as baseline projects for the projects in a project grouping. In the following table, notice that every project in the project grouping maps to a project in the baseline. This example shows a complete baseline.
Baseline for CM/7.0 build 1234 | <== Baseline | Project Grouping for CM/7.1 Integration Testing |
---|---|---|
cm_top-CM/7.0 | <== Baseline project | cm_top-CM/7.1 |
cm_gui-CM/7.0 | <== Baseline project | cm_gui-CM/7.1 |
cm_api-CM/7.0 | <== Baseline project | cm_api-CM/7.1 |
cm_platform-CM/7.0 | <== Baseline project | cm_platform-CM/7.1 |
In the following table, notice that two separate baselines are needed for a hierarchy with mixed components. This example shows correct baselines.
Baseline for CM/7.0 build 1234 | <== Baseline | Project Grouping for CM/7.1 Integration Testing |
---|---|---|
cm_top-CM/7.0 | <== Baseline project | cm_top-CM/7.1 |
cm_gui-CM/7.0 | <== Baseline project | cm_gui-CM/7.1 |
cm_api-CM/7.0 | <== Baseline project | cm_api-CM/7.1 |
cm_platform-CM/7.0 | <== Baseline project | cm_platform-CM/7.1 |
Baseline for TC/5.1 build 5678 | <== Baseline | Project Grouping for TC 5.2 Integration Testing |
change_api-TC/5.1 | <== Baseline project | change_api-TC/5.2 |
If you create a single baseline for projects with mixed components, the projects cannot find a baseline project correctly if you are using standard process rules. In the following example, a subproject called change_api-TC/5.1 is included in a baseline for the CM/7.0 release.
The project cannot be used as a baseline project. The baseline it is a member of (for example, Baseline for CM/7.0 build 1234) cannot be selected by any project grouping (for example, Project Grouping for TC 5.2 Integration Testing) that might use the project as a baseline project. Additionally, tasks for both releases are included in the baseline.
If all of the tasks in the baseline are not used by all of the projects in the baseline, the tasks are not be subtracted by the project grouping during the update. Optimally, new project members selected by the update operation are gathered in this way:
For example, you have a task in your baseline that was not used by one or more projects in your baseline. The task is not subtracted when calculating tasks to use for update.
In the following table, change_api-TC/5.1 in the first column is from another component and should not be in the CM/7.0 baseline. Because it is there, all the tasks associated with it are also part of the baseline. Moreover, none of the tasks from either CM/7.0 or TC/5.1 are used by all of the projects in the baseline. Therefore, none of the tasks are subtracted. This hampers performance.
In the following table, missing in the first column shows that a baseline for Project Grouping for TC 5.2 Integration Testing cannot be found. Because there is no baseline, there cannot be a baseline project for change_api-TC/5.1. You might not get the members that you expect when you update the project.
This example shows a baseline that does not work with standard process rules.
Baseline for CM/7.0 build 1234 | <== Baseline | Project Grouping for CM/7.1 |
---|---|---|
cm_top-CM/7.0 | <== Baseline project | cm_top-CM/7.1 |
cm_gui-CM/7.0 | <== Baseline project | cm_gui-CM/7.1 |
cm_api-CM/7.0 | <== Baseline project | cm_api-CM/7.1 |
cm_platform-CM/7.0 | <== Baseline project | cm_platform-CM/7.1 |
change_api-TC/5.1 | ||
missing | <== Baseline | Project Grouping for TC 5.2 Integration Testing |
none | <== Baseline project | change_api-TC/5.2 |