dot/gitconfig.in: Add explicit `pull' setting.
[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 }