Skip to content

About

GitLab에서 특정 사용자의 기간별 커밋 수를 집계하는 Python 스크립트 (python-gitlab)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GitLab Commit Statistics

Python python-gitlab

GitLab에서 특정 사용자의 커밋 수를 프로젝트별로 집계하는 Python 스크립트입니다.

설치

python -m venv .venv
source .venv/bin/activate
pip install python-gitlab python-dotenv

설정

.env.example을 .env로 복사하고 값을 수정하세요:

cp .env.example .env
GITLAB_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

동작 방식

  1. GROUP_ID가 있으면 해당 그룹(하위 그룹 포함)의 프로젝트를, 없으면 토큰 소유자가 멤버인 모든 프로젝트를 가져옵니다.
  2. 프로젝트마다 GitLab API에 author=AUTHOR_NAME, since=START_DATE, until=END_DATE 조건으로 커밋을 요청합니다. 이것이 1차 필터입니다.
  3. 받아온 커밋 중 author_email이 AUTHOR_EMAIL과 정확히 일치하는 것만 남깁니다. 이것이 2차 필터이며, 동명이인의 커밋을 걸러냅니다.
  4. 프로젝트별 커밋 수와 전체 합계를 출력합니다.

토큰으로 읽을 수 없는 프로젝트는 오류를 내지 않고 조용히 건너뜁니다.

라이선스

MIT License

About

GitLab에서 특정 사용자의 기간별 커밋 수를 집계하는 Python 스크립트 (python-gitlab)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages