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 ~/.zshrcWindows (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
. $PROFILEJAR ํ์ผ ๊ฒฝ๋ก ํ์ธ:
# 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