summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjoe <joe@FreeBSD.org>2002-10-17 16:29:26 +0000
committerjoe <joe@FreeBSD.org>2002-10-17 16:29:26 +0000
commit14c86ef8ad65fcded3886bdb2becd7c856b0d8c5 (patch)
tree81e31828031760128a6d418f1cf7e35120742a9f
parentd156d1195f509624362f2c5a1cd5762b8042fa50 (diff)
downloadFreeBSD-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_db21
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;
OpenPOWER on IntegriCloud