diff options
author | joe <joe@FreeBSD.org> | 2002-10-17 16:29:26 +0000 |
---|---|---|
committer | joe <joe@FreeBSD.org> | 2002-10-17 16:29:26 +0000 |
commit | 14c86ef8ad65fcded3886bdb2becd7c856b0d8c5 (patch) | |
tree | 81e31828031760128a6d418f1cf7e35120742a9f | |
parent | d156d1195f509624362f2c5a1cd5762b8042fa50 (diff) | |
download | FreeBSD-src-14c86ef8ad65fcded3886bdb2becd7c856b0d8c5.zip FreeBSD-src-14c86ef8ad65fcded3886bdb2becd7c856b0d8c5.tar.gz |
Fix a bug that showed up when trying to produce a database for
subdirectories, and ended up making us loop forever.
Add the username to the md5 of the commit to make it slightly more
unique.
Make the 'cvs' run quietly.
-rw-r--r-- | tools/tools/commitsdb/make_commit_db | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/tools/tools/commitsdb/make_commit_db b/tools/tools/commitsdb/make_commit_db index 7b0fee7..d33d4780 100644 --- a/tools/tools/commitsdb/make_commit_db +++ b/tools/tools/commitsdb/make_commit_db @@ -19,21 +19,21 @@ while (@dirs) { my %logs; opendir DIR, $dir or die $!; - foreach (grep { /[^\.]/ } readdir DIR) { - my $filename = "$dir/$_"; + foreach my $f (grep { /[^\.]/ } readdir DIR) { + my $filename = "$dir/$f"; if (-f $filename) { my %loghash = parse_log_message($filename); next unless %loghash; $logs{$filename} = {%loghash}; - } elsif (-d $_) { - next if /^CVS$/; - push @dirs, $_; + } elsif (-d $filename) { + next if $filename =~ /\/CVS$/; + push @dirs, $filename; } } close DIR; - # Product a database of the commits + # Produce a database of the commits foreach my $f (keys %logs) { my $file = $logs{$f}; foreach my $rev (keys %$file) { @@ -58,7 +58,7 @@ sub parse_log_message { my $file = shift; # Get a log of the file. - open LOG, "cvs -R log $file |" or die $!; + open LOG, "cvs -R log $file 2>/dev/null |" or die $!; my @log = <LOG>; my $log = join "", @log; close LOG; @@ -77,11 +77,14 @@ sub parse_log_message { my $rev = $1; # Strip off any other headers. - while ($e =~ s/^(date|branches):[^\n]*\n//sg) { + my $user; + while ($e =~ s/^(date|branches):([^\n]*)\n//sg) { + my $sub = $2; + $user = $1 if $sub =~ /author: (.*?);/; }; my $hash = string_to_hash($e); - $loghash{$rev} = $hash; + $loghash{$rev} = "$user:$hash"; } return %loghash; |