[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: Branching bug ??? (was Re: Bug is tagging the head of a branch head?

From: Christopher.Fouts
Subject: RE: Branching bug ??? (was Re: Bug is tagging the head of a branch head???)
Date: Thu, 20 May 2004 10:55:01 -0400

Thank you very much!!! Like I said, this all make perfect sense to ME
now. However, to some of my users that haven't quite grasped the concept
yet on WHY CVS does its branching the way you folks have patiently
explained to me, the pictures below will just add confussion (to THEM).
But like me, hopefully in due time they'll catch on...


-----Original Message-----
From: Jim.Hyslop [mailto:address@hidden 
Sent: Thursday, May 20, 2004 10:31 AM
To: Fouts Christopher (); address@hidden
Cc: address@hidden
Subject: RE: Branching bug ??? (was Re: Bug is tagging the head of a
branch head???)

address@hidden wrote:
> "A picture paints a thousand words" (David Gates of Bread)
Only when there is something to paint. Applying a branch tag does not
create anything, so there is nothing to paint.

So, let me try giving you a few more dozen words to pass on to your
users. Eventually, we'll get there ;=)

Maybe there's a basic problem in concepts. We frequently talk about
"creating a branch" when what we _really_ mean is "labelling a point
where a branch might start." The branch is not actually _created_ until
you check a version into that branch. There are countless branch tags in
our projects that have nothing checked into them. If nothing gets
checked in under that tag, then the branch does not exist: all you have
done is to reserve a spot where it might start.

Therefore, applying a branch tag to an existing branch tag, where there
is no actual branch yet, is no different from applying the tag to the

Maybe this will help:

cvs tag -b branch_a
cvs tag -r branch_a -b branch_b

will result in:
+-----+    +-----+    +-----+
| 1.1 |----| 1.2 |----| 1.3 |---- ...
+-----+    +-----+    +-----+

branch_a is rooted at 1.3. The second command tells CVS "start branch_b
at the phyiscal revision that exists at the head of branch_a". What
revision is that? That would be 1.3 since no changes have been made on
the branch. Therefore, branch_b is *also* rooted at 1.3. Since both
branches are rooted at the same place, this picture can be rearranged as

+-----+    +-----+    +-----+
| 1.1 |----| 1.2 |----| 1.3 |---- ...
+-----+    +-----+    +-----+

and also:
+-----+    +-----+    +-----+
| 1.1 |----| 1.2 |----| 1.3 |---- ...
+-----+    +-----+    +-----+

The three diagrams above are equivalent.

Jim Hyslop
Senior Software Designer
Leitch Technology International Inc. ( Columnist,
C/C++ Users Journal (

reply via email to

[Prev in Thread] Current Thread [Next in Thread]