Outra solução deu a direção certa. O resultado até agora:
#!/usr/bin/env bash
while read -r -u 9 date name
do
echo "$date $name"
echo
GIT_PAGER=cat git log --no-merges --committer="$name" --since="$date 00:00:00 +0000" --until="$(date --date="$date + 1 day" +%Y-%m-%d) 00:00:00 +0000" --format=' * [%h] %s'
echo
done 9< <(git log --no-merges --format=$'%cd %cn' --date=short | sort --unique --reverse)
Os tempos da meia-noite eram necessários. Parece que, por algum motivo, ele usa a hora atual em vez do início do dia por padrão.
Duas questões permanecem:
- Inclua uma lista de caminhos legível por humanos antes da mensagem de confirmação
- Mensagens longas de confirmação de impressão bonita
Exemplo de saída:
2013-02-19 username
* [f97bb5f] commit message
* [f0e419d] looooooooooooooooooooooooooooong commit message
* [070e50f] commit message
2013-02-19 other_user
* ...
2013-02-18 username
* ...