статистика времени с 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
  • Предоставление разрешений доступа к репозиториям 2 git в одном экземпляре git
  • Git больше не поддерживает автоматическую перезагрузку?
  • Используйте предложенную коррекцию на опечатке
  • Вызывать git без загрузки пользователя gitconfig
  • Ошибка разрешений index.lock - .git принадлежит root, рабочее дерево, принадлежащее другому пользователю
  • После 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

    Изменение Chromium автоматически запускает Nautilus с помощью команды Show In Folder

    Как установить программное обеспечение RAID-5, созданное Windows под Linux?

    Настройка nginx для работы с файлами из подкаталогов

    Спам в Zimbra OpenRelay

    Как изменить права доступа к папке во время установки пакета

    Предотвращение выполнения скриптов и загрузки файлов в каталог?

    Как перенаправить демона и stderr с помощью start-stop-daemon (8)?

    Как вызвать неактивный RAID-массив mdadm после перезагрузки при добавлении диска на рейд-6?

    Массив в меню whiptail – BASH

    iptables: пакеты маршрутов на example.com через общедоступный прокси-сервер

    Как подключиться к Интернету

    Почему файлы .so исполняемы?

    Я продолжаю получать много ошибок при выполнении обновления sudo apt-get. И для завершения требуется много времени.

    распечатать все значения файла после удаления некоторых символов с помощью grep

    Как отображать эскизы для файлов контактов / vcf / vcard в Nautilus или в другом браузере файлов в Ubuntu 14.04?

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