Thread (11 messages) flat view 11 messages, 4 authors, 2016-06-15

Re: [PATCH 2/2] Add Author and Documentation sections to git-for-each-ref.txt

From: Jeff King <hidden>
Date: 2016-06-15 22:50:48

On Thu, Mar 17, 2011 at 02:20:08PM +0000, Will Palmer wrote:
On Wed, 2011-03-09 at 14:14 +0200, Alexei Sholik wrote:
quoted
.................. Just ran this command

git blame -p "$1" | awk '$1 ~ /author$/ { print substr($0,
length("author  "), length($0)) }' | sort | uniq -c | sort -nr

on the for-each-ref.c and saw that Junio had the first place by a
relatively large margin.
Wrap that up in a script and submit /that/ as a patch ;)
That just counts the number of commits that have any surviving line in a
given file. So it's slightly better than "shortlog -ns" in that it
removes commits whose contents have been totally rewritten (and it
properly handles content-following). But if you are going to use blame,
the more interesting measure is probably a count of lines attributed to
each author.  Something like:

  git blame -p "$1" | perl -ne '
    if (/^([0-9a-f]{40})/) {
      $sha1 = $1;
      $count{$sha1}++;
    }
    elsif (/^author (.*)/) {
      $author{$sha1} = $1;
    }
    END {
      foreach my $sha1 (keys(%count)) {
        $r{$author{$sha1}} += $count{$sha1};
      }
      foreach my $a (sort { $r{$b} <=> $r{$a} } keys(%r)) {
        print "$r{$a} $a\n";
      }
    }
  '

-Peff
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help