git log を使用して、自分でフィルター処理したコミット間の一連の差分を表示したいと思います。git log には内部履歴フィルタリング機能があり、( --patch フラグと共に使用すると) 履歴内で大きく離れている可能性のあるコミット間の差分が表示されます。しかし、それを --stdin と組み合わせてコミットのリストを渡そうとすると、これらのコミットの完全な履歴 (実際には、それらが存在するブランチの完全な履歴) が取得されます。-1 を追加しても、目的の動作に近づくことはできません。コミットの合計が 1 つに制限されるだけです。
これのよりクリーンなバージョンを探しています (過去数週間に発生したすべてのコミットの毎日の差分):
git log --date=short --format='%H %ad' --since 2012-05-15 \
|uniq -f1 |while read hash date
do
if [[ -n $hash0 ]]; then
echo ${date}..${date0}
git diff $hash $hash0
fi
hash0=$hash
date0=$date
done |less