[Top][All Lists]

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

RE: checking out multiple branches of a project

From: Jim.Hyslop
Subject: RE: checking out multiple branches of a project
Date: Thu, 21 Apr 2005 10:49:14 -0400

Doug Lee wrote:
> I have often wished for an automatic way to check out all existing
> branches of a given module with one command.  Example:  If I have
> module mymod with HEAD and branches named rel1 and rel2:
> mkdir cvs_co
> cd cvs_co
> cvs co -b mymod
> cd mymod
> ls  # would list HEAD (or head), rel1, and rel2, and probably CVS)
> The -b option is of course ficticious.
You'd want to be careful with this, if the module has a lot of branches.

There is a minor problem: how do you determine which branches a module has?
Branches are not stored per-module, but per-file. I guess the easiest way is
to use one file which is most likely to have all the pertinent branches, and
pull all the branch tags out of that file. The most likely candidate would
be a file that's been around since project inception, such as makefile.

Something like this should do what you want:

cvs rlog -h module/makefile | grep -E '\.0\.[[:digit:]]+' | sed 's/:.*//' |
while read tag; do cvs co -d $tag -r $tag module; done

The rlog command gets the log for the file; -h gets only header info.
The grep command cuts that down to just the tags which have '.0.' followed
by a sequence of digits (these will be branch tags - see note below)
The sed command chops the : and the revision number, leaving only a
space-separated list of tags, which the 'while read' loop gobbles up and
issues a 'cvs co' command for each tag, placing it in a directory named
after the tag.

Note that this will not handle vendor branches (from a cvs import) - the
revision number is a different format (an odd count of numbers, e.g. x.y.z
or u.v.w.x.y, as opposed to a non-vendor branch which ends in .0.x). You'd
have to rewrite the regex for grep to handle this. I'm not good enough at
regex to do that :=)

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]