У меня есть умный сценарий жемчуга, который делает задание:
#!/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, followd количеством измененных файлов, вставки и удаления.
Это также отслеживает Ваши двоичные файлы, но это - конечно, проблема Вашего дизайна repo...
Первое число является индексом задания; связанные с заданием команды (jobs
, fg
, и т.д.), используют их. Так, например, если Вы получаете вывод [2] 2847
, Вы могли работать fg 2
к переднему плану то задание.
Насколько я мог сказать от просматривания источника, нет способа отключить сообщение. Одна проверка, которую это действительно делает, должна гарантировать, что оболочка является интерактивной, поэтому при выполнении команды в неинтерактивной оболочке, Вы не получите тот вывод. Например, Вы могли выполнить его в подоболочке:
$ (your_command &)
Это эквивалентно выполнению команды в совершенно другой оболочке, хотя, таким образом, это могло бы иметь другие нежелательные побочные эффекты
Если Вы готовы исправить bash
, можно просто избавиться от который особый вывод. В ударе 4.2 это находится в jobs.c
на строке 1428
:
fprintf (stderr, "[%d] %ld\n", job + 1, (long)pid);
Это называют при других обстоятельствах; если Вы просто хотите, который уводят для этого конкретного случая, можно прокомментировать execute_cmd.c
, строка 762
:
DESCRIBE_PID (last_made_pid);
Первое число является индексом задания; связанные с заданием команды (jobs
, fg
, и т.д.), используют их. Так, например, если Вы получаете вывод [2] 2847
, Вы могли работать fg 2
к переднему плану то задание.
Насколько я мог сказать от просматривания источника, нет способа отключить сообщение. Одна проверка, которую это действительно делает, должна гарантировать, что оболочка является интерактивной, поэтому при выполнении команды в неинтерактивной оболочке, Вы не получите тот вывод. Например, Вы могли выполнить его в подоболочке:
$ (your_command &)
Это эквивалентно выполнению команды в совершенно другой оболочке, хотя, таким образом, это могло бы иметь другие нежелательные побочные эффекты
Если Вы готовы исправить bash
, можно просто избавиться от который особый вывод. В ударе 4.2 это находится в jobs.c
на строке 1428
:
fprintf (stderr, "[%d] %ld\n", job + 1, (long)pid);
Это называют при других обстоятельствах; если Вы просто хотите, который уводят для этого конкретного случая, можно прокомментировать execute_cmd.c
, строка 762
:
DESCRIBE_PID (last_made_pid);
alias skype="(skype &)"
- это работает, и Вы не должны вводить дополнительный материал - но 1) Вы хотели бы общее решение, поскольку Вы никогда не знаете, какие инструменты Вы будете использовать и 2) Это повредит те инструменты для любого другого использования, скажет, что требуется добавить, что флаг опции, таким образом исправляя намного лучше. Я доберусь до него, Средства управления :) – Emanuel Berg 06.06.2012, 01:45