estatísticas da linha do tempo com git

3

Gostaria de gerar uma estatística do meu repositório git para criar um gráfico de tempo:

<commit> <timestamp> <changed-lines>

35abf648cfc  2011-04-04t17:23:58  +20 -4
93acb668f32  2011-04-04t17:59:01  -4 +1

para que eu possa traçar um gráfico "legal" para isso com o gnuplot ou algo assim. Onde <changed-lines> pode ser qualquer coisa que é gerável, ou seja, +20 -3 (adicionado 20 linhas, removido 3 linhas) ou apenas 23 ou o que for. Importante é que as linhas são contadas - os arquivos alterados não seriam úteis no meu cenário.

Seria bom, se eu pudesse aplicar isso apenas em uma parte do repositório, porque alguns diretórios contêm arquivos binários desagradáveis, o que destruiria uma estatística.

Eu acho que git log pode entrar lá de alguma forma, mas não tenho ideia de por onde começar ...

    
por towi 24.04.2011 / 13:09

2 respostas

3

Esta linha chega perto do que você quer:

$ git log --format="%h %ad" --numstat
b29dfc1 Sun Apr 24 13:32:06 2011 +0200
3       0       bar
0       2       foo

d552271 Sun Apr 24 13:21:16 2011 +0200
2       1       foo

ac8894a Sun Apr 24 13:20:59 2011 +0200
1       0       foo

5965384 Sun Apr 24 13:20:40 2011 +0200
1       0       bar
1       0       foo

Leia a página manit do git para mais informações.

    
por 24.04.2011 / 13:35
3

Eu tenho um script inteligente perl que faz o trabalho:

#!/usr/bin/perl -w

use warnings;
use strict;
use Date::Parse;

my $out = "";
while (<>)
{
    chomp (my $line = $_);
    $out .= $1 if ($line =~ m/^commit ([a-z0-9]+)$/);
    $out .= "\t" . str2time($1) if ($line =~ m/^Date: (.+)$/);
    if ($line =~ m/ (\d+) files changed, (\d+) insertions\(\+\), (\d+) deletions\(-\)/)
    {
        print $out . "\t" . $1 . "\t" . $2 . "\t" . $3 . "\n";
        $out = "";
    }
}

print $out."\n";

Apenas altere as permissões para torná-lo executável e canalize a saída de git log --shortstat para esse script (aqui o script é armazenado /tmp/gitstats.pl ):

user@srv % git log --shortstat | /tmp/gitstats.pl
d56d496ac70f6c441d624413f54aeba1dfb805d7        1303393788      104     51420   12081
98c4b66af7a0c7e6b8155bb2a538f7ca77c1243a        1303285305      234     34756   35022
6e33280279d5bd83ea8d0fde95b08394a297b159        1303251405      6       341     0
[...]

A primeira coluna é o ID de confirmação, a segunda entrada é o carimbo de hora do UNIX, seguido pelo número de arquivos alterados, inserções e exclusões.

Isso também rastreia seus arquivos binários, mas isso é obviamente um problema do seu projeto de recompra ...

    
por 24.04.2011 / 13:44

Tags