Thursday, June 7, 2007

ClearCase: Child Branch vs. Child Stream

In base ClearCase, a dev branch is considered as the child branch of the integration branch. While in UCM, a dev stream is normally considered as the child stream of the integration stream. Yet, after analyzing the config spec of each, you can find out that a dev branch is a true child branch of the integration branch, while the dev stream is not, but only logically considered as a child stream of the integration stream.

Here is the typical dev branch config spec. It clearly shows that the dev branch is branched out from the int branch.


element * CHECKEDOUT
element * .../rel13.0_dev/LATEST
element * .../rel13.0_int/LATEST -mkbranch rel13.0_dev
element * /main/LATEST -mkbranch rel13.0_int

Here is the config spec of a dev stream. It shows that the dev stream is branched out from the recommended baseline.

element * CHECKEDOUT
element "[8226012109f011dc81910001833169b5=\Horizon]/horizon16/..." .../qinl_V5.3_d/LATEST
element "[8226012109f011dc81910001833169b5=\Horizon]/horizon16/..." V5.3_5_29_2007 -mkbranch qinl_V5.3_d
element "[8226012109f011dc81910001833169b5=\Horizon]/horizon16/..." /main/0 -mkbranch qinl_V5.3_d
element * /main/0 -ucm -nocheckout

The change of the branching mechanism from base to UCM means that you cannot always see the pretty picture of a version tree branching from main to integration, then to development branch. But it also makes it possible to add new elements to the dev stream when the integration stream is locked, which cannot be achieved in base CC.

No comments: