revcount.pl #1

  • //
  • guest/
  • matthew_rice/
  • util/
  • cvs2p4/
  • extra/
  • revcount.pl
  • View
  • Commits
  • Open Download .zip Download (1 KB)
#!/usr/bin/perl -w
#
# Use: revcount.pl <changes

$lines = $cnt = 0;
$change_groups = $changes = $bsingles = $singles = 0;
$last_blines = $last_noblines = 0;
%types = ();

while (<>) {
    if (/^#/) {
	$change_groups++; 
	$changes += keys %types;
	$bsingles++ if $lines - $last_blines == 1;
	$last_blines = $lines;
	$singles++ if $cnt - $last_noblines == 1;
	$last_noblines = $cnt;
	%types = ();
	next;
    }
    $lines++;
    @a = split /\001/;
    $a[0] =~ s|(.*)/.*|$1|;
    if ($a[3] eq 'dead') {
        $types{del} = 1, $cnt++, $cnt{$a[4]}++,
		$files{$a[4]}{$a[0]} = 1 unless $a[6] eq '-';
    } else {
    	$types{add} = 1, $cnt++, $cnt{$a[4]}++,
		$files{$a[4]}{$a[0]} = 1 unless $a[5] =~ /^-:/;
	$a[5] =~ s/^-://;
	if ($a[5] ne '-') {
            $types{branch} = 1;
	    for my $line (split /:/, $a[5]) {
		$cnt++;
		$cnt{$line}++;
		$files{$line}{$a[0]} = 1;
	    }
	}
    }
}
$changes += keys %types;
$singles++ if $cnt - $last_noblines == 1;
$bsingles++ if $lines - $last_blines == 1;

print "revs: $cnt\n";
print "change groups: $change_groups\n";
print "changes: $changes\n";
print "single file changes: $bsingles ($singles w/o branches)\n";
print "\nrevs/files per branch:\n";
for my $line (sort { $cnt{$b} <=> $cnt{$a} } keys %cnt) {
     print "$line: $cnt{$line}/", scalar(keys %{$files{$line}}), "\n";
}
# Change User Description Committed
#1 869 Matthew Rice Matt's cvs2p4 1.2.22 release