Branching and creating views

Branches are used in base VersionVault to enable parallel development. A branch is an object that specifies a linear sequence of versions of an element. Every element has one main branch, which represents the principal line of development, and may have multiple subbranches, each of which represents a separate line of development. For example, a project team may use the main branch for new development work while using a subbranch simultaneously for fixing a bug.

Subbranches can have subbranches. For example, a project team may designate a subbranch for porting a product to a different platform. The team may then decide to create a bug-fixing subbranch off that porting subbranch. You can create complex branch hierarchies. The following figure illustrates a multilevel branch hierarchy. As a project manager in such an environment, you need to ensure that developers are working on the correct branches. Developers work in views. A view is a work area for developers to create versions of elements. Each view includes a config spec, which is a set of rules that determines which versions of elements the view selects.
Figure 1. Branching hierarchy in base VersionVault

The version tree of an unnamed element shows that version 0 on the main branch has two subbranches, alpha_port and r1_bugs. Version 0 on the r1_bugs subbranch itself has a branch, bug102.

As project manager, you tell developers which rules to include in their config specs so that their views access the appropriate set of versions.

UCM uses branches also, but you do not have to manipulate them directly because UCM layers streams over the branches. A stream is an HCL VersionVault object that maintains a list of activities and baselines and determines which versions of elements appear in a developer’s view. In UCM, a multiple-stream project contains one integration stream, which records the shared set of elements of the project, and multiple development streams in which developers work on their parts of the project in isolation from the team. The project integration stream uses one branch. Each development stream uses its own branch. You can create a hierarchy of development streams, and UCM creates the branching hierarchy to support those streams.

Although most customers use HCL VersionVault to implement a parallel development environment, UCM and base VersionVault also support serial development. In base VersionVault, you implement a serial development environment by having all developers work on the same branch. In UCM, you create a single-stream project, which contains one stream, the integration stream. All developers work on the integration stream rather than on development streams. Serial development is intended only for very small project teams whose developers work together closely.

As project manager of a UCM project, you need not write rules for config specs. Streams configure developers’ views to access the appropriate versions on the appropriate branches.