About the version tree

Each time you revise and check in an element, a new version of the element is created in the VOB.

The different versions of an element in a VOB can be organized into a version tree. A version tree has branches, and each branch represents an independent line of development. Changes on one branch do not affect other branches until you merge.

Element prog.c has a main branch with versions 0, 1, 2, 3, 4, and 5. Version one has the label REL1.3, and version 5 has the label REL1.4. Connected to version 1 on the main branch is the pat_usability branch with versions 0, 1, and 2. Connected to version 3 on the main branch is the db_optimize branch with versions 0 and 1. Version 1 on the db_optimize branch is merged with version 4 on the main branch.

In the figure above, main, pat_usability, and db_optimize are branches being used to develop concurrently different releases of the file element prog.c.

In UCM projects, the stream keeps track of which branch or set of branches you use in a project; you usually do not work directly with branches.

The initial version on a subbranch

When you create a subbranch for an element, which is any branch below the main branch, the initial version contains the same data as the version from which you start the branch. See the figure below.

The initial version on the main branch always contains no data and is empty. Version 0 on the subbranch contains the same data as Version 1, the version from which the branch starts.