статистика времени с 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 или что-то еще. Важно то, что строки подсчитываются – измененные файлы не будут полезны в моем сценарии.

Было бы хорошо, если бы я мог применить это только на части репо, потому что некоторые каталоги содержат неприятные двоичные файлы, что приведет к уничтожению статистики.

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

  • Как я могу найти git commit в репо, который больше похож на указанную ветвь?
  • Как избежать ошибки 404 с помощью git instaweb?
  • Завершение Гит
  • Загрузка кода с git
  • Используйте предложенную коррекцию на опечатке
  • Как разрешить «gitolite writeable» всем?
  • Git висит в то время как источник клонирования
  • Предоставление разрешений доступа к репозиториям 2 git в одном экземпляре 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, последовательность изменений по количеству файлов, вставки и удаления.

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

    Interesting Posts

    bind -x оставляет терминал в состоянии, напоминающем ^ V

    Может ли вредоносное ПО запускаться после входа пользователя в режим sudo?

    Есть ли способ командной строки, с помощью которого я могу проверить, завершен ли или нет загруженный файл?

    Могу ли я установить dnf на debian?

    Перемещение и переименование сотен файлов .jpg, все имена 5003.jpg

    Как установить пакеты на моем Beagleboard?

    Как создать новые разделы и отформатировать мой жесткий диск?

    Как управлять аутентификацией с несколькими VPS и GoogleApps?

    Как я могу установить yate в качестве моего обработчика протокола tel: default?

    Включить Compiz Fusion при запуске kde

    Socksifying qemu-kvm с использованием tsocks

    Зачем использовать superflous dash (-) для передачи флажков опций в tar?

    Согласованный и безопасный подход к учетным записям без пароля в SSH

    Выпадающий терминал, когда мышь попадает в верхнюю границу рабочего стола

    Есть ли способ узнать, прослушивает ли процесс прослушивание через порт TCP сообщение?

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