chiark / gitweb /
el/dot-emacs.el (mdw-fontify-rust): Fix integer literal syntax.
[profile] / bin / git-copyright-dates
1 #! /usr/bin/perl
2
3 my (%Y, %M);
4 open my $fh, "-|", "git", "log",
5   "--date=format:%Y", "--pretty=format:%ad %aN", @ARGV
6   or die "git log: $!";
7 while (<$fh>) {
8   /(\d+)\s+(.*)$/ or die "wtf?  $_";
9   my ($y, $who) = ($1, $2);
10   push @{$Y{$who}}, $y;
11   if (!exists $M{$who} || $y < $M{$who}) { $M{$who} = $y; }
12 }
13 close $fh or die "git log (rc = $?)";
14
15 my ($S, $O, $L);
16 sub out () {
17   defined $L or return;
18   defined $S and $S .= ", ";
19   if ($O < $L - 1) { $S .= "$O--$L" }
20   elsif ($O != $L) { $S .= "$O, $L" }
21   else { $S .= "$L" }
22 }
23
24 for my $who (sort { $M{$a} <=> $M{$b} } keys %Y) {
25   my @y = sort { $a <=> $b } @{$Y{$who}};
26   undef $S; undef $L;
27   for my $y (@y) {
28     if (!defined $L) { $O = $L = $y; }
29     elsif ($y == $L + 1) { $L = $y; }
30     elsif ($y != $L) { out(); $O = $L = $y; }
31   }
32   out();
33   print "$who: $S\n"
34 }