[cvsnt] Re: virtual branches ?

Oliver Giesen ogware at gmx.net
Mon Oct 17 20:52:23 BST 2005


Matt Schuckmann wrote:

> A few weeks ago I tried the magic branches, on the surface they
> appear to work but there were some problems when you dug deeper. I
> can't remember what exactly the problems were but they were
> significant.  I think it had to do with magic branches on top of
> branches or magic branches.

Yep, that one is behaving rather weird indeed.

Example:
If you create a magic branch off rev. 1.1.2.2, the branch will
initially receive the branch number 1.1.2.0.0.1 . If you create more
revisions on the 1.1.2.x branch and then try to update to the floating
branch it will get you the tip of the 1.1.2.x branch as expected but if
you commit a revision on the floating branch its branch point will
suddenly become HEAD, e.g. the new revision will be something like
1.12.2.1 instead of 1.1.2.5.2.1 as I would have expected... then again,
I'm not sure it makes very much of difference in practice except that
it's no longer possible to tell by the revision tree which revision was
based on which...


> Also I think that cvs graph and CVSView had problems with them.

Yes, I saw that already. They don't show up until you commit revisions
to them.


> I found that I wanted a way to float the branches on command.
> I.E. At some point I'm ready to merge the main line code to my branch
> but I didn't want to actually create branch revisions for files that
> had changed on the main line but not in my branch I just wanted the
> branch to float to the head revision for those files.
> 
> It looks like WinCVS has a macro to do something like this but I
> haven't been able to try it because our old, old server doesn't
> support the options the macro uses.

Do you mean the "Move Branchpoint to HEAD" macro? That would have to be
the tag -B option then, I guess. Is your server still 1.11.1p1 then?

Anyway, if that is the case just remove that option. It was added in
later versions of CVS and CVSNT as a safety catch to prevent accidental
removal of branch tags. If you modify the following line of the macro
(line #120 in rev. 1.2):

        code, out, err = cvs.Run('tag', '-bBF', branch, *args)

to this:

        code, out, err = cvs.Run('tag', '-bF', branch, *args)

then it will probably work with your antique server as well.

Basically, what the macro does is this:

cvs up -A
cvs tag -bBF branch
cvs up -rbranch

You could just as well do that manually of course.

Hope this helps.

-- 
Oliver
----  ------------------
JID:  ogiesen at jabber.org
ICQ:  18777742     (http://wwp.icq.com/18777742)



More information about the cvsnt mailing list