GitLab에서 특정 사용자의 커밋 수를 프로젝트별로 집계하는 Python 스크립트입니다.
python -m venv .venv
source .venv/bin/activate
pip install python-gitlab python-dotenv.env.example을 .env로 복사하고 값을 수정하세요:
cp .env.example .envGITLAB_URL=https://gitlab.example.com
GITLAB_PRIVATE_TOKEN=your_private_token_here
AUTHOR_NAME=your_name
AUTHOR_EMAIL=your_email@example.com
GROUP_ID=22
START_DATE=2025-01-01T00:00:00Z
END_DATE=2025-12-31T23:59:59Z| 변수 | 필수 | 설명 |
|---|---|---|
GITLAB_URL |
O | GitLab 서버 URL |
GITLAB_PRIVATE_TOKEN |
O | GitLab Personal Access Token (read_api 권한이면 충분) |
AUTHOR_NAME |
O | API 검색용 이름 (1차 필터) |
AUTHOR_EMAIL |
O | 정확한 커밋 필터링용 이메일 (2차 필터, 대소문자 무시) |
GROUP_ID |
X | 특정 그룹만 집계할 경우 그룹 ID. 하위 그룹도 포함. 비워두면 토큰 소유자가 멤버인 전체 프로젝트 |
START_DATE |
X | 집계 시작일 (ISO 8601 형식). 기본값 2025-01-01T00:00:00Z |
END_DATE |
X | 집계 종료일 (ISO 8601 형식). 기본값 2025-12-31T23:59:59Z |
python gitlab-stat.py📊 'ygpark' (ygpark@example.com) 님의 커밋 집계 시작
Lab-Developer / Project-A | 47
Lab-Developer / Project-B | 123
Lab-Developer / Project-C | 89
------------------------------------------------------------
🚀 총 커밋 수: 259
이름은 같지만 이메일이 다른 커밋이 있으면 아래처럼 [DEBUG] 줄이 함께 출력됩니다. 프로젝트마다 최대 3개까지만 보여줍니다.
[DEBUG] Project-A: API결과 50개, 이메일필터후 47개
- 제외된 커밋 이메일: other.ygpark@example.com
GROUP_ID가 있으면 해당 그룹(하위 그룹 포함)의 프로젝트를, 없으면 토큰 소유자가 멤버인 모든 프로젝트를 가져옵니다.- 프로젝트마다 GitLab API에
author=AUTHOR_NAME,since=START_DATE,until=END_DATE조건으로 커밋을 요청합니다. 이것이 1차 필터입니다. - 받아온 커밋 중
author_email이AUTHOR_EMAIL과 정확히 일치하는 것만 남깁니다. 이것이 2차 필터이며, 동명이인의 커밋을 걸러냅니다. - 프로젝트별 커밋 수와 전체 합계를 출력합니다.
토큰으로 읽을 수 없는 프로젝트는 오류를 내지 않고 조용히 건너뜁니다.