現在の変更ログを生成するコードは次のとおりです。
svn2cl --linelen 78 --reparagraph --include-rev --group-by-day
私が得ることができる最も近いバニラオプションは
git shortlog --format='* [%h] %s' -w78,8,10
svn2cl
出力をできるだけ近くにシミュレートするにはどうすればよいですか?
出力例:
2013-02-19 username
* [r30695] path1: commit message
* [r30691] path2, path3, path4: looooooooooooooooooooooooooooong
commit message
* [r30690] path1, path3: commit message
2013-02-19 other_user
* ...
2013-02-18 username
* ...
2つの問題が残っています。
- メッセージをコミットする前に人が読めるパスのリストが含まれています。
- 長いコミットメッセージをきれいに印刷する
答え1
別のソリューション正しい方向が与えられた。これまでの結果:
#!/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)
真夜中の時間が必要です。何らかの理由で、基本的に1日の開始時刻ではなく現在時刻が設定されているようです。
2つの問題が残っています。
- メッセージをコミットする前に人が読めるパスのリストが含まれています。
- 長いコミットメッセージをきれいに印刷する
出力例:
2013-02-19 username
* [f97bb5f] commit message
* [f0e419d] looooooooooooooooooooooooooooong commit message
* [070e50f] commit message
2013-02-19 other_user
* ...
2013-02-18 username
* ...
答え2
OS Xで動作するように、l0b0のソリューションを少し修正しました。
git-grouped-log () {
while read -r -u 9 since name
do
until=$(date -j -v+1d -f '%Y-%m-%d' $since +%Y-%m-%d)
echo "$since $name"
echo
GIT_PAGER=cat git log \
--no-merges \
--committer="$name" \
--since="$since 00:00:00 +0000" \
--until="$until 00:00:00 +0000" \
--format=' * [%h] %s'
echo
done 9< <(git log --no-merges --format=$'%cd %cn' --date=short | sort --unique --reverse)
}
また、任意のファイルに保存できるため、関数でラップします。