会社で週報を作る際にいろいろなリポジトリでgit logを発行してコピペしていたのですが、面倒なのでPythonで自動化するスクリプトを書いてみました。設定ファイルに対象のリポジトリのパスを指定しておくと、そのリポジトリ群に対してgitpythonでログを収集し、結果をマークダウンファイルとして出力します。
使い方
自分はuvコマンドを使っているので以下のように起動しています。試していませんが通常のpythonコマンドでも動作すると思います。
uv main.py -f from-date -t to-date -a author-mail
-
-f/--from: 集計期間(FROM)YYYY-MM-DD形式 -
-t/--to: 集計期間(TO)YYYY-MM-DD形式 -
-a/--author: 対象のユーザーのメールアドレス
※スクリプト内で"{from} 00:00:00"や"{to} 23:59:59"のように時刻を付与しているため、日付だけ指定すればOKです。
出力ファイル名
出力されるマークダウンのファイル名は集計期間を使って以下のように生成しています。
{from_date_YYYYMMDD}_{to_date_YYYYMMDD}.md
設定ファイル
他のメンバーも使うことを考慮して、対象のリポジトリのパスやマークダウンファイルの出力先に関しては設定ファイルで指定できるようにしています。
TARGET_REPOS = [
"path/to/repo1",
"path/to/repo2",
"path/to/repo3",
]
APP_PATH = {
"OUTPUT_PATH": "./output"
}
出力イメージ
出力されるイメージは以下のような感じです。
このスクリプトを作業したリポジトリを例にしています。
# Commits Log
- From: 2026-01-26
- To: 2026-01-26
- Author Mail: ...@......
## Repo: weekGit (D:\........\python\weekGit)
- 4 commit(s)
- **2026-01-26 16:15:15** | 8631080ac180e0dc85c09205476b9a992aa4a536 | **hyperdb**
- 📝設定ファイルについて追記
- **2026-01-26 15:08:16** | 94048d4bc40eda629d6d424eb206b9b96a83414b | **hyperdb**
- 📝ライセンスファイルを追加
- **2026-01-26 14:58:50** | e848b0a055292cd3f4e111f08d7bfb720e05e1a7 | **hyperdb**
- 🩹Geminiのレビュー結果を反映
- **2026-01-26 14:53:53** | b00fb8cf3335362f7cb689b9669f4626e482634b | **hyperdb**
- 🎉初期コミット
おわりに
gitpythonを使うと、Gitリポジトリの操作が非常に簡単にできるので便利ですね。あと、コマンドライン引数の処理にclickを使ってみましたが、こちらもシンプルに書けて良い感じでした。
最近は正常系だけを自分で書いて、エラー処理などはレビューを兼ねてCopilotやGeminiにお願いすることがほとんどです。今回もそんな感じで作成しましたが、なかなか良いコードが生成されて助かりました(というか、かなり修正されました)。
スクリプトのコードは以下のGitHubリポジトリで公開していますので、興味があればご覧ください。
以上、参考になれば幸いです。