Tue, 3 Jul 2001 17:05:28 +0200
On Tue, Jul 03, 2001 at 10:31:40AM -0400, Guido van Rossum wrote:
> > Slightly off-topic, but I've depleted all my other sources :) I'm tryin=
> > get CVS to give me all logentries for all checkins in a specific branch=
> > 2.1.1 branch) so I can pipe it through logmerge. It seems the one thing=
> > missing now is a branchpoint tag (which should translate to a revision =
> > an even number of dots, apparently) but 'release21' and 'release21-main=
> > both don't qualify. Even the usage logmerge suggests (cvs log -rrelease=
> > doesn't work, gives me a bunch of "no revision =12elease21' in <file>"
> > warnings and just all logentries for those files.
> But those files should be old, so logmerge should safely sort their
> messages last, right?
Yes, but it also lists all checkin messages for all branches, including the
trunk, after release21... so I end up no smarter than without '-rrelease21'.
> > Am I missing something simple, here, or should I hack logmerge to parse=
> > symbolic names, figure out the even-dotted revision for each file from =
> > uneven-dotted branch-tag, and filter out stuff outside that range ? :P
> You're lucky: at least the fork point is tagged (release21). For the
> descr-branch, if I want to do some kind of reasonable merge, I'll have
> to write a tool that figures out the fork point and tags it. That's
> one "cvs tag" call for each file...
No, that's one 'cvs log' command; for each entry, it contains all symbolic
names. All you need to do <wink> is to search for the descr-branch symbolic
name in that list, grab the revision it lists (if any), chop off the last
dot-and-digit, and you're done. You can almost do that in a shell oneliner:
centurion:~/python/python-CVS > cvs log | egrep "(RCS file:|descr-branch:)"=
| python -c "
lastline =3D ''
for line in fileinput.input():
if lastline and line =3D=3D '\t':
filename =3D lastline[33:-3]
revision =3D line.split()
branchpoint =3D revision[:revision.rindex('.')]
print filename, branchpoint
lastline =3D ''
lastline =3D line
(adjust quotes for (t)csh, I guess)
Tadaaa! Hmm... I'll just use that myself, too <wink>.
But why not merge the trunk into your tree ? You can do that with
cvs update -j HEAD
inside your (sticky-tagged) working tree, IIRC. It doesn't change the
repository either, just your working directory, so it's safe to try in a
separate directory. Then, when you're satisfied it all works, you can commit
the whole thing.
Thomas Wouters <firstname.lastname@example.org>
Hi! I'm a .signature virus! copy me into your .signature file to help me sp=