В Git 1.8.3 и более поздних версиях это поддерживается в формате pretty , использующем синтаксис %<(<i>N</i>)
для форматирования следующего заполнителя в виде N столбцов:
$ git log --pretty=format:'%h %<(20)%an %s' -10
Для версий до 1.8.3 предыдущая версия этого ответа, приведенная ниже, должна работать.
Вот решение в Bash с использованием read
для анализа строк журнала назадкроме printf
, чтобы распечатать их, с полем фиксированной ширины для имени авторов, чтобы столбцы оставались выровненными.Предполагается, что |
никогда не появится в имени автора;Вы можете выбрать другой разделитель, если считаете, что это может быть проблемой.
git log --pretty=format:'%h|%an|%s' -10 |
while IFS='|' read hash author message
do
printf '%s %-20s %s\n' "$hash" "$author" "$message"
done
Вы можете создать это как псевдоним, используя:
[alias]
mylog = "!git log --pretty=format:'%h|%an|%s' -10 | while IFS='|' read hash author message; do printf '%s %-20s %s\n' \"$hash\" \"$author\" \"$message\"; done"
Я уверен, что вы могли бы сделать это вменьше символов, использующих awk
, но как звучит поговорка :
Когда люди сталкиваются с проблемой, некоторые говорят: «Давайте использовать AWK». Теперь у них две проблемы.
Конечно, сказав это, я должен был выяснить, как это сделать в awk
, что немного короче:
git ... | awk -F '|' '{ printf "%s %-20s %s\n", $1, $2, $3 }'