11# Commit Chronicle
22
3- AI를 활용한 Git 커밋 분석 및 요약 라이브러리입니다. 커밋 히스토리를 분석하여 Pull Request 초안, 변경 로그, 커밋 요약을 자동으로 생성합니다.
3+ [ ![ JitPack] ( https://jitpack.io/v/hj4645/commit-chronicle.svg )] ( https://jitpack.io/#hj4645/commit-chronicle )
4+ [ ![ License: MIT] ( https://img.shields.io/badge/License-MIT-yellow.svg )] ( https://opensource.org/licenses/MIT )
5+ [ ![ Kotlin] ( https://img.shields.io/badge/kotlin-%237F52FF.svg?style=flat&logo=kotlin&logoColor=white )] ( https://kotlinlang.org/ )
6+ [ ![ GitHub Issues] ( https://img.shields.io/github/issues/hj4645/commit-chronicle.svg )] ( https://github.com/hj4645/commit-chronicle/issues )
7+ [ ![ GitHub Stars] ( https://img.shields.io/github/stars/hj4645/commit-chronicle.svg )] ( https://github.com/hj4645/commit-chronicle/stargazers )
8+ [ ![ CI] ( https://github.com/hj4645/commit-chronicle/workflows/JitPack%20Release/badge.svg )] ( https://github.com/hj4645/commit-chronicle/actions )
9+
10+ AI를 활용한 Git 커밋 분석 및 요약 라이브러리입니다. 커밋 히스토리를 분석하여 Pull Request 초안, 변경 로그, 커밋 요약을 자동 생성합니다.
11+
12+ ## 🌐 다국어 문서
13+
14+ - ** [ 한국어 (Korean)] ( README.md ) ** - 현재 문서
15+ - ** [ English] ( README_EN.md ) ** - English Documentation
16+ - ** [ 中文 (Chinese)] ( README_ZH.md ) ** - 中文文档
17+ - ** [ 日本語 (Japanese)] ( README_JA.md ) ** - 日本語ドキュメント
418
519## 🚀 주요 기능
620
721- ** AI 기반 커밋 분석** : OpenAI, Claude, Gemini, Perplexity, DeepSeek 지원
822- ** PR 초안 자동 생성** : 커밋 히스토리 기반 PR 템플릿 생성
923- ** 다국어 지원** : 한국어, 영어, 중국어, 일본어
1024- ** GitHub 템플릿 감지** : 기존 PR 템플릿 자동 적용
11- - ** 브랜치 검증** : main/master 브랜치 경고 및 의미있는 커밋 필터링
1225- ** CLI 도구** : 명령줄에서 바로 사용 가능
1326
1427## 📦 설치 방법
@@ -46,84 +59,148 @@ dependencies {
4659
4760## 🛠️ 사용 방법
4861
49- ### CLI 사용법
62+ ### 1. 라이브러리 설치 후 CLI 사용
5063
51- #### 1. 초기 설정
64+ 라이브러리를 dependency로 추가한 후, alias를 설정하여 CLI로 사용할 수 있습니다:
5265
5366``` bash
54- java -jar commitchronicle-0.1.0.jar
67+ # Gradle 캐시에서 JAR 파일 경로 확인
68+ find ~ /.gradle/caches -name " commitchronicle-0.1.0.jar" -type f
69+
70+ # alias 설정 (예시 - 실제 경로로 수정 필요)
71+ alias cch=" java -jar ~/.gradle/caches/modules-2/files-2.1/com.github.hj4645/commit-chronicle/v0.1.0/*/commitchronicle-0.1.0.jar"
72+
73+ # 또는 직접 다운로드한 JAR 파일 사용
74+ alias cch=" java -jar /path/to/commitchronicle-0.1.0.jar"
5575```
5676
57- 첫 실행 시 대화형 설정이 시작됩니다:
58- - 언어 선택 (한국어, English, 中文, 日本語)
59- - AI 모델 선택 (OpenAI, Claude, Gemini, Perplexity, DeepSeek)
60- - API 키 입력
77+ ### 2. 초기 설정
6178
62- #### 2. 커밋 요약 생성
79+ 처음 실행 시 인터랙티브 설정이 시작됩니다:
6380
6481``` bash
65- # 기본 설정으로 요약 (최근 7일, 최대 50개 커밋)
66- java -jar commitchronicle-0.1.0.jar summarize
82+ cch settings
83+ ```
6784
68- # 옵션 지정
69- java -jar commitchronicle-0.1.0.jar summarize -d 14 -l 100
70- java -jar commitchronicle-0.1.0.jar summarize --path /path/to/repo
85+ ** 설정 과정:**
86+
87+ 1 . ** 언어 선택**
88+ - 한국어 (Korean)
89+ - English
90+ - 中文 (Chinese)
91+ - 日本語 (Japanese)
92+
93+ 2 . ** AI 모델 선택**
94+ - OpenAI (gpt-4o, gpt-4o-mini, gpt-4-turbo)
95+ - Claude (claude-3-5-sonnet-20241022, claude-3-5-haiku-20241022)
96+ - Gemini (gemini-2.0-flash-exp, gemini-1.5-flash, gemini-1.5-pro)
97+ - Perplexity (llama-3.1-sonar-large-128k-online, llama-3.1-sonar-small-128k-online)
98+ - DeepSeek (deepseek-chat, deepseek-coder)
99+
100+ 3 . ** API 키 입력**
101+ - 선택한 AI 모델의 API 키 입력
102+
103+ 4 . ** 분석 설정**
104+ - 기본 분석 기간 (일 단위, 기본값: 7일)
105+ - 최대 커밋 수 (기본값: 50개)
106+
107+ ** 설정 예시:**
108+ ```
109+ Update current settings
110+
111+ Select setting to update:
112+ Selected: Language
113+
114+ Select language (current: en):
115+ Selected: 한국어 (Korean)
116+ Language updated to: ko (AI responses will use this language)
117+
118+ Select setting to update:
119+ Selected: AI Provider
120+
121+ Select AI provider (current: openai):
122+ Selected: OpenAI (API Key ✓)
123+
124+ Select model for openai (current: gpt-4o):
125+ Selected: GPT-4o (Latest)
126+
127+ API key for openai (current: ***):
128+ Selected: Keep existing API key
129+
130+ Select setting to update:
131+ Selected: Analysis Settings
132+
133+ Enter default days for analysis (current: 7, press Enter to keep current): 14
134+
135+ Enter default commit limit (current: 50, press Enter to keep current): 100
136+ Analysis settings updated - Days: 14, Limit: 100
137+
138+ Select setting to update:
139+ Selected: Done
140+ Configuration saved successfully
71141```
72142
73- #### 3. PR 초안 생성
143+ ### 3. CLI 명령어 사용
144+
145+ #### 커밋 요약 생성
74146
75147``` bash
76- # 현재 브랜치의 PR 초안 생성
77- java -jar commitchronicle-0.1.0.jar pr
148+ # 기본 설정 사용 (설정된 기간과 커밋 수)
149+ cch summarize
78150
79151# 옵션 지정
80- java -jar commitchronicle-0.1.0.jar pr -d 7 -l 20
152+ cch summarize -d 14 -l 100 # 14일간, 최대 100개 커밋
153+ cch summarize --days 7 --limit 50 # 7일간, 최대 50개 커밋
154+ cch summarize --path /path/to/repo # 특정 저장소 경로
81155```
82156
83- #### 4. 설정 관리
157+ #### PR 초안 생성
84158
85159``` bash
86- # 현재 설정 보기
87- java -jar commitchronicle-0.1.0.jar settings --show
88-
89- # 설정 변경
90- java -jar commitchronicle-0.1.0.jar settings
160+ # 현재 브랜치의 PR 초안 생성
161+ cch pr
91162
92- # 설정 초기화
93- java -jar commitchronicle-0.1.0.jar settings --reset
163+ # 옵션 지정
164+ cch pr -d 7 -l 20 # 7일간, 최대 20개 커밋
165+ cch pr --path /path/to/repo # 특정 저장소 경로
94166```
95167
96- ### 라이브러리 사용법
168+ #### 설정 관리
97169
98- ``` kotlin
99- import com.commitchronicle.git.GitAnalyzerFactory
100- import com.commitchronicle.ai.factory.AISummarizerFactory
101- import com.commitchronicle.ai.providers.openai.config.OpenAIConfig
102- import com.commitchronicle.ai.AIProviderType
103- import com.commitchronicle.language.Locale
170+ ``` bash
171+ # 설정 변경 (인터랙티브 메뉴)
172+ cch settings
173+
174+ # 도움말 보기
175+ cch settings --help
176+ cch --help
177+ ```
104178
105- // Git 분석기 생성
106- val gitAnalyzer = GitAnalyzerFactory .create(" /path/to/repo" )
179+ ### 4. 키보드 방향키 설정 방법
107180
108- // AI 설정
109- val aiConfig = OpenAIConfig (
110- apiKey = " your-api-key" ,
111- locale = Locale .KOREAN
112- )
113- val aiSummarizer = AISummarizerFactory .create(aiConfig, AIProviderType .OPENAI )
181+ 설정 메뉴에서는 키보드 방향키를 사용하여 옵션을 선택할 수 있습니다:
114182
115- // 커밋 분석
116- val commits = gitAnalyzer.getCommits(7 ) // 최근 7일
117- val summary = aiSummarizer.summarize(commits)
118- val prDraft = aiSummarizer.generatePRDraft(commits)
183+ - ** ↑/↓ 화살표** : 옵션 선택
184+ - ** Enter** : 선택 확인
185+ - ** Esc** : 이전 메뉴로 돌아가기
119186
120- println (" 요약: $summary " )
121- println (" PR 초안: $prDraft " )
187+ ** 설정 메뉴 구조:**
188+ ```
189+ Main Menu
190+ ├── Language (언어 설정)
191+ ├── AI Provider (AI 모델 설정)
192+ │ ├── Provider Selection
193+ │ ├── Model Selection
194+ │ └── API Key Input
195+ ├── Analysis Settings (분석 설정)
196+ │ ├── Default Days
197+ │ └── Commit Limit
198+ └── Done (완료)
122199```
123200
124- ## 🔧 설정
201+ ## 🔧 설정 파일
125202
126- 설정은 ` ~/.commit-chronicle/config.json ` 에 저장됩니다:
203+ 설정은 ` ~/.commit-chronicle/config.json ` 에 로컬 저장됩니다:
127204
128205``` json
129206{
@@ -135,10 +212,44 @@ println("PR 초안: $prDraft")
135212}
136213```
137214
138- ## 🤖 지원 AI 모델
215+ ** 설정 지속성:**
216+ - 한 번 설정하면 계속 유지됩니다
217+ - 다른 프로젝트에서도 동일한 설정 사용
218+ - 필요시 ` cch settings ` 로 언제든 변경 가능
219+
220+ ## 🔧 GitHub 템플릿 자동 감지
221+
222+ ### 지원하는 템플릿 경로
223+
224+ ** PR 템플릿 (우선순위 순):**
225+ ```
226+ .github/pull_request_template_[locale].md # 다국어 지원
227+ .github/pull_request_template.md
228+ .github/PULL_REQUEST_TEMPLATE.md
229+ .github/PULL_REQUEST_TEMPLATE/pull_request_template.md
230+ docs/pull_request_template.md
231+ docs/PULL_REQUEST_TEMPLATE.md
232+ pull_request_template.md
233+ PULL_REQUEST_TEMPLATE.md
234+ ```
235+
236+ ** 다국어 템플릿 예시:**
237+ - ` .github/pull_request_template_ko.md ` (한국어)
238+ - ` .github/pull_request_template_en.md ` (영어)
239+ - ` .github/pull_request_template_zh.md ` (중국어)
240+ - ` .github/pull_request_template_ja.md ` (일본어)
241+
242+ ### 템플릿 적용 방식
243+
244+ 1 . ** 자동 감지** : 위 경로에서 템플릿 파일을 자동으로 찾습니다
245+ 2 . ** 언어별 우선순위** : 설정된 언어에 맞는 템플릿을 우선 적용
246+ 3 . ** 폴백 처리** : 해당 언어 템플릿이 없으면 기본 템플릿 사용
247+ 4 . ** 동적 적용** : AI가 템플릿 구조에 맞춰 내용을 자동 생성
248+
249+ ## 🤖 지원하는 AI 모델
139250
140- | 제공업체 | 모델 |
141- | ---------| ------|
251+ | 프로바이더 | 모델 |
252+ | ------------- | -- ------|
142253| OpenAI | gpt-4o, gpt-4o-mini, gpt-4-turbo |
143254| Claude | claude-3-5-sonnet-20241022, claude-3-5-haiku-20241022 |
144255| Gemini | gemini-2.0-flash-exp, gemini-1.5-flash, gemini-1.5-pro |
@@ -150,7 +261,7 @@ println("PR 초안: $prDraft")
150261```
151262commit-chronicle/
152263├── core/
153- │ ├── api/ # 인터페이스 및 모델
264+ │ ├── api/ # 인터페이스와 모델
154265│ └── impl/ # 구현체
155266├── cli/ # CLI 도구
156267└── build.gradle.kts # 빌드 설정
@@ -173,7 +284,7 @@ commit-chronicle/
173284
174285MIT License
175286
176- ## 🤝 기여하기
287+ ## 🤝 기여
177288
1782891 . Fork the repository
1792902 . Create your feature branch (` git checkout -b feature/amazing-feature ` )
0 commit comments