#!/usr/bin/env python import sys for y in open(sys.argv[1]): y = int(y) x += 1 while x < y: print x x += 1
-121--290335-
Примечание: Вместо кода PHP ниже, если вы хотите отследить все git commits (а не только те, которые зафиксированы с помощью PHP), должна быть возможность установить пост-commit hook с аналогичным выходом.
Сразу после написания вопроса я наткнулся на это действительно простое руководство . Исходя из этого, я сделал следующее:
Создайте каталог журнала и установите разрешения
Я не тестировал это без установки разрешений, но я предполагаю, что это необходимо.
sudo mkdir /var/log/gitweb sudo chown: www-data /var/log/gitweb
Функция PHP git регистрации
Эта строка кода выполняется каждый раз, когда я запускаю
git commit
в коде php. Новые строки заменяются пользовательской последовательностью, так что каждая фиксация находится в собственной строке (насколько мне известно, Logwatch может работать только построчно). При анализе с помощью Logwatch он будет заменен на новые строки.shell_exec('(git log -1 --date=iso --name-status | awk 1 ORS="[NEWLINE_HERE]" ; echo) >> /var/log/gitweb/gitweb.log');
Группа файлов журнала Logwatch
# /etc/logwatch/conf/logfiles/gitweb.conf LogFile = gitweb/*.log Archive = gitweb/*.gz *ExpandRepeats
Не совсем уверен, что делает * ExpandRepeats, но это было в руководстве, с которым я связался.
Служба Logwatch
# /etc/logwatch/conf/services/gitweb.conf Title = "Git commits" LogFile = gitweb
Анализатор Logwatch
Это делает две вещи:
Я знаю абсолютно нулевое значение perl (я посмотрел другие сценарии Logwatch для справки), поэтому
use Logwatch ':dates';
my $filter = TimeFilter('%Y-%m-%d %H:%M:%S');
while (defined(my $ThisLine = )) {
if ($ThisLine =~ /$filter/) {
$ThisLine =~ s/\[NEWLINE_HERE\]/\n/g;
print $ThisLine;
}
}
exit(0);
# /etc/logrotate.d/gitweb
/var/log/gitweb/*log {
daily
# keep 10 old logs
rotate 10
# don't do anything if the log is missing
missingok
# don't do anything if the log is empty
notifempty
# zip the archived logs
compress
}
-121--290276-
Если не требуется переместить почтовый магазин; просто восстановите конфигурацию до значений по умолчанию.
Эта настройка хранит сообщения электронной почты в /var/spool/mail/
вместо home
, что означает, что любой устанавливаемый MUA будет знать, где его найти без какой-либо перенастройки.