ANSI-Heatmap

 view release on metacpan or  search on metacpan

examples/git.pl  view on Meta::CPAN

my $LIMIT = 20;
my $PER_ROW = 4;

my $i;
my %day2idx = map { $_ => $i++ } qw(Mon Tue Wed Thu Fri Sat Sun);
my %map;
my %commit_count;

my $repo = shift or die "usage: $0 /path/to/git-repo";
chdir $repo;
open my $log, '-|', 'git', 'log', '--no-merges', '--remove-empty', "--format=%cN\t%cD";
while (<$log>) {
    /\A([^\t]+)\t(\w+), \d+ \w+ \d+ (\d+):\d+:\d+ [-+]\d+\Z/ or die "invalid line '$_'";
    my ($name, $day, $hour) = ($1, $2, $3);
    $day = $day2idx{$day}; defined $day or die "Invalid day";

    $commit_count{$name}++;
    if (!$map{$name}) {
        $map{$name} = ANSI::Heatmap->new(
            min_x => 0,
            max_x => 23,
            min_y => 0,



( run in 0.480 second using v1.01-cache-2.11-cpan-49f99fa48dc )