AIλ₯Ό νμ©ν Git μ»€λ° λΆμ λ° μμ½ λΌμ΄λΈλ¬λ¦¬μ λλ€. μ»€λ° νμ€ν 리λ₯Ό λΆμνμ¬ Pull Request μ΄μ, λ³κ²½ λ‘κ·Έ, μ»€λ° μμ½μ μλ μμ±ν©λλ€.
- νκ΅μ΄ (Korean) - νμ¬ λ¬Έμ
- English - English Documentation
- δΈζ (Chinese) - δΈζζζ‘£
- ζ₯ζ¬θͺ (Japanese) - ζ₯ζ¬θͺγγγ₯γ‘γ³γ
- AI κΈ°λ° μ»€λ° λΆμ: OpenAI, Claude, Gemini, Perplexity, DeepSeek μ§μ
- PR μ΄μ μλ μμ±: μ»€λ° νμ€ν 리 κΈ°λ° PR ν νλ¦Ώ μμ±
- λ€κ΅μ΄ μ§μ: νκ΅μ΄, μμ΄, μ€κ΅μ΄, μΌλ³Έμ΄
- GitHub ν νλ¦Ώ κ°μ§: κΈ°μ‘΄ PR ν νλ¦Ώ μλ μ μ©
- CLI λꡬ: λͺ λ Ήμ€μμ λ°λ‘ μ¬μ© κ°λ₯
repositories {
maven { url = uri("https://jitpack.io") }
}
dependencies {
// νΉμ λ²μ μ¬μ©
implementation("com.github.hj4645:commit-chronicle:1.0.0")
// λλ μ΅μ λ²μ μλ μ¬μ©
implementation("com.github.hj4645:commit-chronicle") // μ΅μ 릴리μ€
// λλ
implementation("com.github.hj4645:commit-chronicle:latest") // μ΅μ 릴리μ€
}
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependencies>
<!-- νΉμ λ²μ μ¬μ© -->
<dependency>
<groupId>com.github.hj4645</groupId>
<artifactId>commit-chronicle</artifactId>
<version>1.0.0</version>
</dependency>
<!-- λλ μ΅μ λ²μ μλ μ¬μ© -->
<dependency>
<groupId>com.github.hj4645</groupId>
<artifactId>commit-chronicle</artifactId>
<version>latest</version> <!-- μ΅μ λ¦΄λ¦¬μ€ -->
</dependency>
</dependencies>
λΌμ΄λΈλ¬λ¦¬λ₯Ό dependencyλ‘ μΆκ°ν ν, aliasλ₯Ό μ€μ νμ¬ CLIλ‘ μ¬μ©ν μ μμ΅λλ€.
macOS/Linux:
# μλ μ΅μ λ²μ νμ§ alias (κΆμ₯) - μ λ²μ μ΄ λ€μ΄λ‘λλλ©΄ μλμΌλ‘ μ΅μ λ²μ μ¬μ©
echo "alias cch='java -jar \$(find ~/.gradle/caches -path \"*commit-chronicle*\" -name \"*.jar\" -type f -print0 | xargs -0 ls -t | head -1)'" >> ~/.zshrc && source ~/.zshrc
# λλ λ¨κ³λ³λ‘ μ€μ
echo 'alias cch="java -jar \$(find ~/.gradle/caches -path \"*commit-chronicle*\" -name \"*.jar\" -type f -print0 | xargs -0 ls -t | head -1)"' >> ~/.zshrc
source ~/.zshrc
Windows (PowerShell):
# JAR νμΌ κ²½λ‘ μ°ΎκΈ°
$jarPath = Get-ChildItem -Path "$env:USERPROFILE\.gradle\caches" -Recurse -Name "*commit-chronicle*.jar" | Select-Object -First 1
$fullPath = Join-Path "$env:USERPROFILE\.gradle\caches" $jarPath
# alias μ€μ
echo "function cch { java -jar `"$fullPath`" @args }" >> $PROFILE
. $PROFILE
JAR νμΌ κ²½λ‘ νμΈ:
# macOS/Linux
find ~/.gradle/caches -name "*commit-chronicle*" -type f | grep "\.jar$"
# Windows (PowerShell)
Get-ChildItem -Path "$env:USERPROFILE\.gradle\caches" -Recurse -Name "*commit-chronicle*.jar"
alias μ€μ :
# macOS/Linux
alias cch="java -jar /μ€μ /jar/νμΌ/κ²½λ‘/commit-chronicle-1.0.0.jar"
# Windows (PowerShell)
function cch { java -jar "C:\μ€μ \jar\νμΌ\κ²½λ‘\commit-chronicle-1.0.0.jar" @args }
μ²μ μ€ν μ μΈν°λν°λΈ μ€μ μ΄ μμλ©λλ€:
cch settings
μ€μ κ³Όμ :
-
μΈμ΄ μ ν
- νκ΅μ΄ (Korean)
- English
- δΈζ (Chinese)
- ζ₯ζ¬θͺ (Japanese)
-
AI λͺ¨λΈ μ ν
- OpenAI (gpt-4o, gpt-4o-mini, gpt-4-turbo)
- Claude (claude-3-5-haiku-20241022, claude-3-haiku-20240307, claude-3-5-sonnet-20241022, claude-3-sonnet-20240229, claude-3-7-sonnet-20250219)
- Gemini (gemini-2.5-pro, gemini-2.0-flash, gemini-2.5-flash)
- Perplexity (llama-3.1-sonar-large-128k-online, llama-3.1-sonar-small-128k-online)
- DeepSeek (deepseek-chat, deepseek-coder)
-
API ν€ μ λ ₯
- μ νν AI λͺ¨λΈμ API ν€ μ λ ₯
-
λΆμ μ€μ
- κΈ°λ³Έ λΆμ κΈ°κ° (μΌ λ¨μ, κΈ°λ³Έκ°: 7μΌ)
- μ΅λ μ»€λ° μ (κΈ°λ³Έκ°: 50κ°)
μ€μ μμ:
Update current settings
Select setting to update:
Selected: Language
Select language (current: en):
Selected: νκ΅μ΄ (Korean)
Language updated to: ko (AI responses will use this language)
Select setting to update:
Selected: AI Provider
Select AI provider (current: openai):
Selected: OpenAI (API Key β)
Select model for openai (current: gpt-4o):
Selected: GPT-4o (Latest)
API key for openai (current: ***):
Selected: Keep existing API key
Select setting to update:
Selected: Analysis Settings
Enter default days for analysis (current: 7, press Enter to keep current): 14
Enter default commit limit (current: 50, press Enter to keep current): 100
Analysis settings updated - Days: 14, Limit: 100
Select setting to update:
Selected: Done
Configuration saved successfully
# κΈ°λ³Έ μ€μ μ¬μ© (μ€μ λ κΈ°κ°κ³Ό μ»€λ° μ)
cch summarize
# μ΅μ
μ§μ
cch summarize -d 14 -l 100 # 14μΌκ°, μ΅λ 100κ° μ»€λ°
cch summarize --days 7 --limit 50 # 7μΌκ°, μ΅λ 50κ° μ»€λ°
cch summarize --path /path/to/repo # νΉμ μ μ₯μ κ²½λ‘
# νμ¬ λΈλμΉμ PR μ΄μ μμ±
cch pr
# μ΅μ
μ§μ
cch pr -d 7 -l 20 # 7μΌκ°, μ΅λ 20κ° μ»€λ°
cch pr --path /path/to/repo # νΉμ μ μ₯μ κ²½λ‘
# μ€μ λ³κ²½ (μΈν°λν°λΈ λ©λ΄)
cch settings
# λμλ§ λ³΄κΈ°
cch settings --help
cch --help
μ€μ λ©λ΄μμλ ν€λ³΄λ λ°©ν₯ν€λ₯Ό μ¬μ©νμ¬ μ΅μ μ μ νν μ μμ΅λλ€:
- β/β νμ΄ν: μ΅μ μ ν
- Enter: μ ν νμΈ
- Esc: μ΄μ λ©λ΄λ‘ λμκ°κΈ°
μ€μ λ©λ΄ ꡬ쑰:
Main Menu
βββ Language (μΈμ΄ μ€μ )
βββ AI Provider (AI λͺ¨λΈ μ€μ )
β βββ Provider Selection
β βββ Model Selection
β βββ API Key Input
βββ Analysis Settings (λΆμ μ€μ )
β βββ Default Days
β βββ Commit Limit
βββ Done (μλ£)
μ€μ μ ~/.commit-chronicle/config.json
μ λ‘컬 μ μ₯λ©λλ€:
{
"apiKey": "your-api-key",
"providerType": "openai",
"locale": "ko",
"defaultDays": 7,
"defaultLimit": 50
}
μ€μ μ§μμ±:
- ν λ² μ€μ νλ©΄ κ³μ μ μ§λ©λλ€
- λ€λ₯Έ νλ‘μ νΈμμλ λμΌν μ€μ μ¬μ©
- νμμ
cch settings
λ‘ μΈμ λ λ³κ²½ κ°λ₯
PR ν νλ¦Ώ (μ°μ μμ μ):
.github/pull_request_template_[locale].md # λ€κ΅μ΄ μ§μ
.github/pull_request_template.md
.github/PULL_REQUEST_TEMPLATE.md
.github/PULL_REQUEST_TEMPLATE/pull_request_template.md
docs/pull_request_template.md
docs/PULL_REQUEST_TEMPLATE.md
pull_request_template.md
PULL_REQUEST_TEMPLATE.md
λ€κ΅μ΄ ν νλ¦Ώ μμ:
.github/pull_request_template_ko.md
(νκ΅μ΄).github/pull_request_template_en.md
(μμ΄).github/pull_request_template_zh.md
(μ€κ΅μ΄).github/pull_request_template_ja.md
(μΌλ³Έμ΄)
- μλ κ°μ§: μ κ²½λ‘μμ ν νλ¦Ώ νμΌμ μλμΌλ‘ μ°Ύμ΅λλ€
- μΈμ΄λ³ μ°μ μμ: μ€μ λ μΈμ΄μ λ§λ ν νλ¦Ώμ μ°μ μ μ©
- ν΄λ°± μ²λ¦¬: ν΄λΉ μΈμ΄ ν νλ¦Ώμ΄ μμΌλ©΄ κΈ°λ³Έ ν νλ¦Ώ μ¬μ©
- λμ μ μ©: AIκ° ν νλ¦Ώ ꡬ쑰μ λ§μΆ° λ΄μ©μ μλ μμ±
νλ‘λ°μ΄λ | λͺ¨λΈ |
---|---|
OpenAI | gpt-4o, gpt-4o-mini, gpt-4-turbo |
Claude | claude-3-5-haiku-20241022, claude-3-haiku-20240307, claude-3-5-sonnet-20241022, claude-3-sonnet-20240229, claude-3-7-sonnet-20250219 |
Gemini | gemini-2.5-pro, gemini-2.0-flash, gemini-2.5-flash |
Perplexity | llama-3.1-sonar-large-128k-online, llama-3.1-sonar-small-128k-online |
DeepSeek | deepseek-chat, deepseek-coder |
commit-chronicle/
βββ core/
β βββ api/ # μΈν°νμ΄μ€μ λͺ¨λΈ
β βββ impl/ # ꡬν체
βββ cli/ # CLI λꡬ
βββ build.gradle.kts # λΉλ μ€μ
- νκ΅μ΄ (ko)
- English (en)
- δΈζ (zh)
- ζ₯ζ¬θͺ (ja)
- API ν€λ μ¬μ©μ ν λλ ν 리μ μμ νκ² μ μ₯
- JAR νμΌμ λ―Όκ°ν μ 보 ν¬ν¨λμ§ μμ
- μ¬μ©μλ³ λ 립μ μΈ μ€μ κ΄λ¦¬
MIT License
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
- Issues: GitHub Issues
- Documentation: Wiki