
🧬 Gitリポジトリからコントリビューター情報を抽出・分析する
GitリポジトリやGitHubから名前、メールアドレス、一見無関係なアカウント間のリンクといったアイデンティティを抽出するOSINTツールです。
gitcolombo.py) — リポジトリをクローンし、git log を辿り、よりリッチなシグナルを得るためにGitHub APIを呼び出すことも可能。gitcolombo.html) — 単一の静的HTMLファイル。ブラウザで開き、GitHub APIに直接問い合わせます。インストール不要。各メール/名前の由来(PGPキー、公開イベント、コミット検索、コミットメッセージのトレーラーなど)の詳細については、docs.md を参照してください。
https://gitcolombo.soxoj.com でホストされています — または gitcolombo.html をローカルで開いてください。ブラウザから直接GitHub APIに問い合わせる単一の静的HTMLファイル。インストール不要、バックエンド不要。
Python 3.10以上と、動作する git バイナリが必要です。サードパーティのPython依存関係はありません。
pip install gitcolombo
ソースからインストールする場合:
git clone https://github.com/Soxoj/gitcolombo
cd gitcolombo
pip install -e .
# 任意のGit URLから
gitcolombo -u https://github.com/Soxoj/maigret
# ローカルディレクトリから(再帰的)
gitcolombo -d ./maigret -r
# GitHubユーザー/Organizationのすべての公開リポジトリをクローンしてスキャン
gitcolombo --nickname octocat
# APIのみ:GitHubユーザー名のメールアドレスをクローンせずに検索
gitcolombo --search Soxoj
# リモートリポジトリのクローン先を変更(デフォルト: ./repos)
gitcolombo -u https://github.com/Soxoj/maigret --repos-dir ./clones
python -m gitcolombo も同様に機能します。スクリプトを $PATH に置きたくない場合に便利です。
リモートリポジトリはデフォルトで ./repos/ にクローンされます。--repos-dir で上書き可能です。GitLabやBitbucketグループからの一括クローンには ghorg を使用してください。
開発者はしばしばあるアイデンティティ(例:仕事用アカウント)でコミットし、別のアイデンティティ(例:個人用アカウント)に切り替えた後、git commit --amend を実行します。この操作はコミッターを書き換えますが、元の作成者はそのまま残ることを忘れがちです。この2つの役割が乖離し、その不一致こそが gitcolombo が相関させるものです。
作成者とコミッターの違いに関する簡単な説明: https://stackoverflow.com/questions/18750808/difference-between-author-and-committer-in-git
標準ライブラリのみのテストスイート — サードパーティの依存関係はありません。リポジトリルートから(pip install -e . の後):
python3 -m unittest test_gitcolombo -v
エンドツーエンドテストは一時ディレクトリに実際のGitリポジトリを作成するため、動作する git バイナリが必要です(git がない場合はテストはスキップされます)。
テストはすべてのプッシュおよびプルリクエストごとにGitHub Actions(.github/workflows/tests.yml)上で、Python 3.10~3.13で実行されます。
[email protected]、@users.noreply.github.com)を除外