0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

コミットログを収集してマークダウン出力する

Posted at

会社で週報を作る際にいろいろなリポジトリで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を使ってみましたが、こちらもシンプルに書けて良い感じでした。

最近は正常系だけを自分で書いて、エラー処理などはレビューを兼ねてCopilotGeminiにお願いすることがほとんどです。今回もそんな感じで作成しましたが、なかなか良いコードが生成されて助かりました(というか、かなり修正されました)。

スクリプトのコードは以下のGitHubリポジトリで公開していますので、興味があればご覧ください。

以上、参考になれば幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?