Attached is the 'git-shortlog' script I whipped up, to mimic the shortlog script that was used back in the BitKeeper days.
shortlog reads a changelog in the 'git-whatchanged' format, such as git-whatchanged | git-shortlog or git-shortlog changes.txt and outputs the changes sorted by author: author1: cset 1-line desc cset 1-line desc ... author2: cset 1-line desc ... ... Since git distinguishes 'author' from 'committer', I ran git-whatchanged | git-shortlog > changes.txtto look at the kernel authors throughout the entire history [of which is in git].
It's fun to browse, since this is the first time we've been able to get a better picture who is actually writing the patches, versus committing them. See changes.txt.bz2, attached.
Jeff
#!/usr/bin/perl -w use strict; my ($author, $desc, %map); my $pstate = 1; while (<>) { # get author if ($pstate == 1) { next unless /^Author: (.*)$/; $author = $1; $pstate++; } # skip to blank line elsif ($pstate == 2) { next unless /^\s*$/; $pstate++; } # skip to non-blank line elsif ($pstate == 3) { next if /^\s*$/; chomp; $desc = $_; &shortlog_entry($author, $desc); $pstate = 1; } else { die "invalid parse state $pstate"; } } &shortlog_output; exit(0); sub shortlog_entry($$) { my ($tmp_author, $tmp_desc) = @_; $tmp_desc =~ s#/pub/scm/linux/kernel/git/#/.../#g; $tmp_desc =~ s#\[PATCH\] ##g; $tmp_desc =~ s#^\s+##g; if (exists $map{$tmp_author}) { # grab ref my $obj = $map{$tmp_author}; # add desc to array push(@$obj, $tmp_desc); } else { # create new array, containing 1 item my @arr = ($tmp_desc); # store ref to array $map{$tmp_author} = \@arr; } } sub shortlog_output { my ($obj); foreach $author (sort keys %map) { print "$author:\n"; $obj = $map{$author}; foreach $desc (@$obj) { print " $desc\n"; } print "\n"; } }
Attachment:
changes.txt.bz2
Description: BZip2 compressed data
- Follow-Ups:
- Re: git-shortlog script
- From: Linus Torvalds <[email protected]>
- Re: git-shortlog script
- Prev by Date: Re: 2.6.12?
- Next by Date: [PATCH] BUG #3054 madvise doesn't fail for exceding RSS limit.
- Previous by thread: netdev queue updated
- Next by thread: Re: git-shortlog script
- Index(es):