
🧬 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 사용자/조직의 모든 공개 리포지토리 클론 및 스캔
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를 실행합니다. 이때 커미터는 다시 쓰여지지만 원래 작성자는 그대로 남는다는 사실을 잊습니다. 두 역할이 분리되고, 그 불일치를 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)