Subject: [ANNOUNCE] cvsps support for parsing BK->CVS kernel tree logs
From: David Mansfield <[email-masked]>
To: [email-masked]
Cc: Andrea Arcangeli <[email-masked]>, Larry McVoy <[email-masked]>
Date: Tue, 18 Mar 2003 12:41:42 -0500 (EST)

Hi everyone,

I've just added (updated) lightly tested support for the BK->CVS kernel
trees to cvsps (www.cobite.com/cvsps) in version 2.0b4.  The purpose of
this effort is to recreate the BK ChangeSet meta-data that is embedded in
the 'cvs log' data in these trees.  BTW, cvsps is GPL software :-p. I'd
like to thank Larry and Andrea for helping me track down some issues with
this effort. This is still a BETA version, though, and I haven't given
this enough testing, so be nice.  It works for me.

This version is tested and works against this morning's linux-2.4 and
linux-2.5 trees, and contains a few workarounds for specific issues in
those trees.  See below for information on these problems.

The output of cvsps looks like:
------------------------------
PatchSet 999
Date: 2002/07/11 19:50:46
Author: alan
Branch: HEAD
Tag: (none)
Log:
[PATCH] Fix several pdc202xx problems

Misnaming of 20270 as 20268R
Failure of LBA48 on 20262
Incorrect speed detection because the old driver used host not drive side
cable detect
PDC202xx handling for quirks in udma reporting off some drives
LBA48 for PIO mode

BKrev: 3d2dd386wJMnehoOAhv3wL991IfXVQ

Members:
        ChangeSet:1.999->1.1000
        MAINTAINERS:1.74->1.75
        drivers/ide/ide-features.c:1.4->1.5
        drivers/ide/ide-pci.c:1.18->1.19
        drivers/ide/pdc202xx.c:1.11->1.12
        include/linux/pci_ids.h:1.44->1.45
-----------------

You can also get a diff of this PatchSet using the '-g' option to cvsps.

There are currently 2,798 PatchSets in the linux-2.4 tree, and 8,382 in 
the linux-2.5 tree.

Quick start instructions
========================
Download, build and install cvsps from http://www.cobite.com/cvsps
Get the 2.0b4 (or latest) version.
Create a working directory with the tree of your choice:

cvs -d:pserver:[email-masked]:/home/cvs co linux-2.4/Makefile

cd linux-2.4

[ IMPORTANT: cvsps doesn't currently support an option for setting the
compression level so PLEASE, edit your .cvsrc and put 'cvs -z4' to enable
compression ]

cvsps [-x] --bkcvs

This basically runs a 'cvs rlog' against the tree, parses, and caches all
of the revision history as PatchSets.  It also outputs all of the 
PatchSet summaries to stdout, so you may want to '>/dev/null' the first 
time.

Subsequent 'cvsps' commands do not need the '--bkcvs' unless you are 
updating (-u, not completely tested) or rebuilding (-x, always works) the 
cache file.

Now you can use cvsps to browse the patchsets at your leisure, without 
loading the cvs server (except to generate diffs).  See cvsps -h for the 
many ways you can slice and dice the information.

I welcome any feedback.

Problems
========
I have currently encountered two problems with the log format.

1) someone has committed sections of 'cvs log' text into the log.  This 
causes quite a headache for my parser, because false end-of-log-message 
markers are present in the log.  Fortunately, Larry has put a '(Logical 
change x.yyyy)' marker at the end of each log message, see alse 2)

2) Not all log messages are terminated by a '(Logical change x.yyy)' 
marker.  A single revision of one file is missing this marker, Larry is 
looking into why this may have happened.

Both of these problems are being worked around by my 'Adaptive Crap Filter 
(notTM)' code.  Don't look at it.  It'll kill you.

David

-- 
/==============================\
| David Mansfield              |
| [email-masked]           |
\==============================/