статистика времени с git

Я хотел бы создать статистику из моего репозитория git для создания временной диаграммы:

<commit> <timestamp> <changed-lines> 35abf648cfc 2011-04-04t17:23:58 +20 -4 93acb668f32 2011-04-04t17:59:01 -4 +1 

поэтому я могу построить «хороший» график для этого с помощью gnuplot или около того. Где <changed-lines> может быть чем угодно, то есть +20 -3 (добавлено 20 строк, удалено 3 строки) или всего 23 или что-то еще. Важно то, что строки подсчитываются – измененные файлы не будут полезны в моем сценарии.

  • Как создать часть куска с добавленной новой линией в EOF?
  • Можно ли клонировать только часть проекта git?
  • Как я могу сделать git status --short быть по умолчанию
  • Вызывать git без загрузки пользователя gitconfig
  • Что такое git revert - спросить?
  • Git всегда выводит ошибку для двоичного файла
  • Было бы хорошо, если бы я мог применить это только на части репо, потому что некоторые каталоги содержат неприятные двоичные файлы, что приведет к уничтожению статистики.

    Я думаю, что git log может прийти как-то, но я не знаю, с чего начать …

  • Подмодуль Git показывает новые коммиты, статус подмодуля ничего не говорит для фиксации
  • Удалить ветвь из всех подмодулей
  • git вытащить из пульта дистанционного управления, но такой рефлекс не был получен?
  • Как разрешить «gitolite writeable» всем?
  • Как сбросить ветвь git на заданную ранее фиксацию и исправить отдельную головку?
  • Отменить фиксацию и передать их ветке?
  • 2 Solutions collect form web for “статистика времени с git”

    Эта строка приближается к тому, что вы хотите:

     $ 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 

    Подробнее читайте в man-странице журнала git .

    У меня есть смарт-скрипт perl, который выполняет эту работу:

     #!/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"; 

    Просто измените разрешения, чтобы сделать его исполняемым и вывести вывод git log --shortstat в этот скрипт (здесь хранится /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 [...] 

    Первый столбец – идентификатор фиксации, вторая запись – отметка времени unix, последовательность изменений по количеству файлов, вставки и удаления.

    Это также отслеживает ваши двоичные файлы, но это, конечно, проблема вашего репо-дизайна …

    Linux и Unix - лучшая ОС в мире.