私はいくつかのgitプロジェクトの複数のブランチで働いています。これらすべてのプロジェクトとブランチ(タイムシートの目的で)で、特定の日付のコミットのリストを取得したいと思います。
その目的のためにユーティリティスクリプトを書くことはできますが、車輪の再発明はしたくありません。既存のUNIXベースのツールまたはいくつかのgitパワーユーザーレシピを使用して、これを行う簡単な方法はありますか?
私はいくつかのgitプロジェクトの複数のブランチで働いています。これらすべてのプロジェクトとブランチ(タイムシートの目的で)で、特定の日付のコミットのリストを取得したいと思います。
その目的のためにユーティリティスクリプトを書くことはできますが、車輪の再発明はしたくありません。既存のUNIXベースのツールまたはいくつかのgitパワーユーザーレシピを使用して、これを行う簡単な方法はありますか?
単一のリポジトリの場合:
git log --all --after="<date> 00:00" --before="<date> 23:59" --author="<author>"
<date>
一般的な形式にすることができます。 <author>
大文字と小文字が区別され、電子メールアドレスもチェックします。
これは、作成者の日付(このコンテンツが最初にコミットされたのはいつか)ではなく、コミッターの日付(このコミットがこのリポジトリ/ブランチに適用されたのはいつか)を調べます。これは、リベースしたり、チェリーピックしたりした場合に重要です。著者の日付に相当する機能はないようです。
一連のリポジトリのこのログを取得するには、次のコマンドを実行できます。
for dir in repo1 repo2 ... repo_n; do
git --no-pager --git-dir="$dir/.git" log --all \
--after="<date> 00:00" \
--before="<date> 23:59" \
--author="<author>"
&& echo # to add a blank line between logs
done
複数のリポジトリを操作する場合は、 mrを使用できます。
たとえば、 .mrconfigでカスタムアクションを定義します。
[DEFAULT]
git_daylog = git log --branches --after="$* 00:00" --before="$* 24:00" --author="$(git config user.email)"
[gitrepos/my_blog_app]
[path_to_another_project_from_home]
...
mr daylog 26 june
そして、現在のディレクトリの下でmrに登録されているすべてのリポジトリのログを言って取得できるようになります。