## Git.
DOTSUBST += .gitconfig
+SCRIPTLINKS += git-copyright-dates
DOTLINKS += .cgrc .tigrc
.gitconfig_SUBSTS = \
$(call substvar,releasekey,$(call mdw-conf,release-key,481334C2))
--- /dev/null
+#! /usr/bin/perl
+
+my (%Y, %M);
+open my $fh, "-|", "git", "log",
+ "--date=format:%Y", "--pretty=format:%ad %aN"
+ or die "git log: $!";
+while (<$fh>) {
+ /(\d+)\s+(.*)$/ or die "wtf? $_";
+ my ($y, $who) = ($1, $2);
+ push @{$Y{$who}}, $y;
+ if (!exists $M{$who} || $y < $M{$who}) { $M{$who} = $y; }
+}
+close $fh or die "git log (rc = $?)";
+
+my ($S, $O, $L);
+sub out () {
+ defined $L or return;
+ defined $S and $S .= ", ";
+ if ($O < $L - 1) { $S .= "$O--$L" }
+ elsif ($O != $L) { $S .= "$O, $L" }
+ else { $S .= "$L" }
+}
+
+for my $who (sort { $M{$a} <=> $M{$b} } keys %Y) {
+ my @y = sort { $a <=> $b } @{$Y{$who}};
+ undef $S; undef $L;
+ for my $y (@y) {
+ if (!defined $L) { $O = $L = $y; }
+ elsif ($y == $L + 1) { $L = $y; }
+ elsif ($y != $L) { out(); $O = $L = $y; }
+ }
+ out();
+ print "$who: $S\n"
+}