Skip to content

joshua92y/auto-commit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Auto Commit Tool with CommitGPT

Hugging Face의 무료 AI 모델과 OpenAI API를 사용하여 Git 커밋 메시지를 자동으로 생성하고 커밋하는 도구입니다.

기능

  • 🤖 AI 기반 커밋 메시지 생성: Hugging Face Seq2Seq/CausalLM 모델 또는 OpenAI API 사용
  • 🎨 Gitmoji 지원: 이모지가 포함된 시각적으로 매력적인 커밋 메시지
  • 📝 Conventional Commits: 표준 커밋 메시지 형식 준수
  • 🔍 스마트 컨텍스트 분석: Git diff와 브랜치 정보를 바탕으로 적절한 메시지 생성
  • 자동 스테이징: 변경사항을 자동으로 스테이징
  • 🛡️ 안전한 커밋: 사용자 확인 후 커밋 실행
  • 🔧 유연한 설정: 다양한 모델과 옵션 지원
  • 📄 본문 자동 생성: 커밋 메시지 본문도 자동으로 생성
  • 🔄 자동 Fallback: Seq2Seq 모델 실패 시 CausalLM으로 자동 전환

설치

  1. 의존성 설치:
pip install -r requirements.txt
  1. 실행 권한 부여 (Linux/Mac):
chmod +x auto-commit.py

설정

config.json 설정

{
  "backend": "hf", // "hf" 또는 "openai"
  "models": {
    "default": "t5-small", // Seq2Seq 모델
    "fallback": "gpt2" // CausalLM fallback 모델
  },
  "openai": {
    "api_key": "your-openai-api-key",
    "model": "gpt-3.5-turbo"
  },
  "huggingface": {
    "api_key": "your-hf-api-key",
    "inference_endpoint": ""
  }
}

환경변수 설정

# OpenAI API 키
export OPENAI_API_KEY="your-openai-api-key"

# Hugging Face API 키
export HF_API_KEY="your-hf-api-key"

사용법

기본 사용법

# Hugging Face Seq2Seq 모델 사용 (기본값)
python auto-commit.py

# OpenAI API 사용
python auto-commit.py --backend openai

# 특정 모델 사용
python auto-commit.py --model gpt2
python auto-commit.py --backend openai --model gpt-4

옵션

  • --repo, -r: Git 저장소 경로 (기본값: 현재 디렉토리)
  • --model, -m: 모델명 (기본값: config.json에서 로드)
  • --backend, -b: 백엔드 선택 (hf/openai)
  • --openai-api-key: OpenAI API 키
  • --hf-api-key: Hugging Face API 키
  • --no-stage: 자동 스테이징 비활성화
  • --dry-run: 드라이 런 모드 (실제 커밋 안함)
  • --list-models: 사용 가능한 모델 목록 출력

사용 예시

# 기본 사용 (Hugging Face Seq2Seq)
python auto-commit.py

# OpenAI API 사용
python auto-commit.py --backend openai

# API 키와 함께 사용
python auto-commit.py --backend openai --openai-api-key "sk-..."

# 드라이 런 (테스트)
python auto-commit.py --dry-run

# 자동 스테이징 없이
python auto-commit.py --no-stage

# 사용 가능한 모델 확인
python auto-commit.py --list-models

지원하는 모델

Hugging Face (무료)

Seq2Seq 모델 (권장)

  • t5-small (기본값) - Google의 T5 모델의 작은 버전으로 안정적이고 빠른 Seq2Seq 모델
  • t5-base - T5 모델의 기본 버전
  • t5-large - T5 모델의 큰 버전 (더 정확하지만 느림)

CausalLM 모델 (Fallback)

  • microsoft/DialoGPT-medium
  • microsoft/DialoGPT-small
  • microsoft/DialoGPT-large
  • gpt2
  • gpt2-medium
  • distilgpt2
  • HuggingFaceH4/zephyr-7b-beta
  • mistralai/Mistral-7B-Instruct-v0.2

OpenAI (유료)

  • gpt-3.5-turbo
  • gpt-4
  • gpt-4-turbo

모델 타입 설명

Seq2Seq 모델

  • 장점: 입력(diff)을 받아 출력(커밋 메시지)을 생성하는 구조로 커밋 메시지 생성에 최적화
  • 특징: 더 정확하고 일관된 커밋 메시지 생성
  • 사용: 기본적으로 t5-small 사용

CausalLM 모델

  • 장점: 텍스트 생성에 특화된 모델들
  • 특징: Seq2Seq 모델 로드 실패 시 자동으로 fallback
  • 사용: 다양한 대화형 모델 지원

커밋 메시지 형식

생성되는 커밋 메시지는 Conventional Commits + Gitmoji 형식을 따릅니다:

✨ feat(api): 사용자 인증 기능 추가

JWT 기반 인증 로직 및 테스트 추가.
기존 로그인 방식과 호환됨.

지원하는 타입과 Gitmoji

타입 Gitmoji 설명
feat 새로운 기능 추가
fix 🐛 버그 수정
docs 📄 문서 수정 (README 등)
style 💄 코드 포맷팅 (세미콜론, 공백, 들여쓰기 등)
refactor 🔁 기능 변화 없는 코드 구조 개선
test 테스트 코드 추가 및 수정
chore 🔧 빌드 설정, 패키지 매니저 수정 등 기타 작업
ci 🚀 CI/CD 관련 설정 변경
build 🏗️ 빌드 시스템 또는 의존성 관련 변경
revert 이전 커밋 되돌리기
etc 🧰 여러 타입을 한 번에 처리

작동 방식

  1. 변경사항 감지: Git 저장소의 변경사항을 확인
  2. 자동 스테이징: 변경된 파일들을 스테이징 (옵션)
  3. 컨텍스트 분석: Git diff와 브랜치 정보 수집
  4. 모델 로드: Seq2Seq 모델 우선 시도, 실패 시 CausalLM으로 fallback
  5. AI 메시지 생성: 선택된 백엔드로 커밋 메시지 생성
  6. 형식 검증: Conventional Commits + Gitmoji 형식으로 보정
  7. 사용자 확인: 생성된 메시지를 사용자에게 표시하고 확인
  8. 커밋 실행: 확인 후 실제 커밋 수행

주의사항

  • Hugging Face: 첫 실행 시 모델 다운로드에 시간이 걸릴 수 있습니다
  • Seq2Seq 모델: 커밋 메시지 생성에 특화되어 더 정확한 결과를 제공합니다
  • 자동 Fallback: Seq2Seq 모델 로드 실패 시 자동으로 CausalLM으로 전환됩니다
  • OpenAI: API 호출 비용이 발생할 수 있습니다
  • GPU: GPU가 있다면 자동으로 CUDA를 사용하여 성능이 향상됩니다

문제 해결

모델 로드 실패

# 더 작은 모델 사용
python auto-commit.py --model distilgpt2

# OpenAI API 사용
python auto-commit.py --backend openai

메모리 부족

# CPU 전용 모드 (환경변수 설정)
export CUDA_VISIBLE_DEVICES=""
python auto-commit.py

API 키 오류

# 환경변수 확인
echo $OPENAI_API_KEY
echo $HF_API_KEY

# 명령행에서 직접 지정
python auto-commit.py --backend openai --openai-api-key "sk-..."

라이선스

MIT License

기여

버그 리포트나 기능 제안은 이슈로 등록해주세요.

About

auto-commit

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors