[prev in list] [next in list] [prev in thread] [next in thread] 

List:       freebsd-hackers
Subject:    Re: Alternate lists for more verbose CVS commit messages?
From:       Sujal Patel <smpatel () umiacs ! umd ! edu>
Date:       1996-07-01 1:14:55
[Download RAW message or body]

On Sat, 29 Jun 1996, Jordan K. Hubbard wrote:

> > I often would like to know more about problems certain commit might fix,
> > and see what modifications were committed.  Could it be possible to create
> > alternate commit lists which would receive detailed commit messages ?
> > Getting a full CVS diff would be helpful, if nothing else.
>
> Uh, what's wrong with simply subscribing to a cvs-* list and then
> cross-referencing the revision numbers mentioned with the
> http://www.freebsd.org/cgi-bin/cvsweb CGI script to get the diffs you
> want?

Or just pipe your piece of mail from cvs-* into the attached script and
you'll get an instant diff :-)  It works 98% of the time (gets confused on
some branch commits, added files, and imports).  If someone wants to make
this really work well, that'll be cool (It's good enough for me :-)


Sujal

-- Cut --
#!/usr/bin/perl

# FreeBSD cvs-* -> diff processor
# Author: Sujal Patel <smpatel@freebsd.org>
# This program is in the Public Domain


while (<>) {
	if (/^  ([\d.]*)\s*(\+\d* \-\d*)\s*([\S\/]*)\s*/) {
		$rev = $1;
		$changes = $2;
		$path = $3;

		if ($rev =~ /((\d*\.)+)(\d*)/) {
			if ($3 == 1) {
				printf ("\n *** Can't determine previous version of %s\n", $path);
				printf (" *** Skipping File\n\n");
				next;
			}
			$oldrev = sprintf ("$1%d", $3 - 1);
		}

		$line = sprintf("GET /cgi-bin/cvsweb/$path?r1=text&tr1=$oldrev&r2=text&tr2=$rev&f=i\n");

		$af_inet = 2;
		$sock_stream = 1;
		$sockaddr = 'S n a4 x8';

		chop($hostname = `hostname`);
		($name, $aliases, $proto) = getprotobyname('tcp');
		($name, $aliases, $type, $len, $thisaddr) =
			gethostbyname($hostname);
		($name, $aliases, $type, $len, $thataddr) =
			gethostbyname("www.FreeBSD.org");
		$this = pack($sockaddr, $af_inet, 0, $thisaddr);
		$that = pack($sockaddr, $af_inet, 80, $thataddr);

		socket(SOCK, $af_inet, $sock_stream, $proto) || die $!;
		bind(SOCK, $this) || die $!;
		connect(SOCK, $that) || die $!;

		select(SOCK); $| = 1; select(STDOUT);

		print SOCK $line;

		while (<SOCK>) {
			print;
		}
	}
}

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic