This commit is contained in:
197
app/README.md
Normal file
197
app/README.md
Normal file
@@ -0,0 +1,197 @@
|
||||
# Git Commit Message Generator CLI
|
||||
|
||||
A CLI tool that generates git commit messages and conventional changelogs from staged/unstaged diffs using local LLMs (Ollama, llama.cpp). Features privacy-first operation with no external API calls, supports conventional commits format, includes interactive mode for message refinement, auto-detects change types, and can generate CHANGELOG.md from git history.
|
||||
|
||||
## Features
|
||||
|
||||
- **Privacy-First**: All processing happens locally using Ollama - no external API calls
|
||||
- **Conventional Commits**: Generates messages following the conventional commits format
|
||||
- **Interactive Mode**: Refine and edit messages before committing
|
||||
- **Auto-Detection**: Automatically detects change types (feat, fix, docs, etc.)
|
||||
- **Scope Detection**: Identifies affected areas from file paths
|
||||
- **Changelog Generation**: Creates CHANGELOG.md from git history
|
||||
- **Flexible Configuration**: Supports environment variables and config files
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
pip install git-commit-message-generator
|
||||
```
|
||||
|
||||
Or from source:
|
||||
|
||||
```bash
|
||||
pip install -e .
|
||||
```
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Python 3.9+
|
||||
- [Ollama](https://ollama.ai/) running locally
|
||||
- A supported model (llama3, codellama, etc.)
|
||||
|
||||
Install Ollama and pull a model:
|
||||
|
||||
```bash
|
||||
# Install Ollama from https://ollama.ai
|
||||
ollama serve
|
||||
ollama pull llama3
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
### Generate Commit Message
|
||||
|
||||
Generate a commit message from staged changes:
|
||||
|
||||
```bash
|
||||
git-commit-gen generate
|
||||
```
|
||||
|
||||
Generate from unstaged changes:
|
||||
|
||||
```bash
|
||||
git-commit-gen generate --unstaged
|
||||
```
|
||||
|
||||
Use interactive mode for message refinement:
|
||||
|
||||
```bash
|
||||
git-commit-gen generate --interactive
|
||||
```
|
||||
|
||||
Specify a different model:
|
||||
|
||||
```bash
|
||||
git-commit-gen generate --model codellama
|
||||
```
|
||||
|
||||
Write message to file:
|
||||
|
||||
```bash
|
||||
git-commit-gen generate -o commit-message.txt
|
||||
```
|
||||
|
||||
### Generate Changelog
|
||||
|
||||
Generate a changelog from git history:
|
||||
|
||||
```bash
|
||||
git-commit-gen changelog
|
||||
```
|
||||
|
||||
Generate with a limit on commits:
|
||||
|
||||
```bash
|
||||
git-commit-gen changelog --limit 100
|
||||
```
|
||||
|
||||
Generate simple changelog (without LLM):
|
||||
|
||||
```bash
|
||||
git-commit-gen changelog --simple
|
||||
```
|
||||
|
||||
Write to file:
|
||||
|
||||
```bash
|
||||
git-commit-gen changelog -o CHANGELOG.md
|
||||
```
|
||||
|
||||
### Check Status
|
||||
|
||||
Check system status and configuration:
|
||||
|
||||
```bash
|
||||
git-commit-gen status
|
||||
```
|
||||
|
||||
### Configure Settings
|
||||
|
||||
Show current configuration:
|
||||
|
||||
```bash
|
||||
git-commit-gen config --show
|
||||
```
|
||||
|
||||
Set default model:
|
||||
|
||||
```bash
|
||||
git-commit-gen config --model llama3
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
### Environment Variables
|
||||
|
||||
| Variable | Description | Default |
|
||||
|----------|-------------|---------|
|
||||
| `OLLAMA_HOST` | Ollama server URL | `http://localhost:11434` |
|
||||
| `OLLAMA_MODEL` | Default model to use | `llama3` |
|
||||
| `GIT_COMMIT_GENERATOR_CONFIG` | Path to config file | - |
|
||||
|
||||
### Config File
|
||||
|
||||
Create a `config.yaml` file:
|
||||
|
||||
```yaml
|
||||
ollama_host: http://localhost:11434
|
||||
ollama_model: llama3
|
||||
```
|
||||
|
||||
## Prompt Templates
|
||||
|
||||
Customize generation prompts by creating files in the prompts directory:
|
||||
|
||||
- `prompts/commit_message.txt` - Template for commit message generation
|
||||
- `prompts/changelog.txt` - Template for changelog generation
|
||||
|
||||
## Error Handling
|
||||
|
||||
| Error | Solution |
|
||||
|-------|----------|
|
||||
| Ollama connection failed | Check if Ollama is running, verify host URL |
|
||||
| No staged changes | Stage with `git add` or use `--unstaged` |
|
||||
| Invalid format | Regenerate or manually edit |
|
||||
| Git repo not found | Run from within a git repository |
|
||||
| Model not found | Pull with `ollama pull <model_name>` |
|
||||
|
||||
## Development
|
||||
|
||||
### Running Tests
|
||||
|
||||
```bash
|
||||
pytest tests/ -v --cov=src --cov-report=term-missing
|
||||
```
|
||||
|
||||
### Project Structure
|
||||
|
||||
```
|
||||
git-commit-message-generator/
|
||||
├── src/git_commit_generator/
|
||||
│ ├── __init__.py
|
||||
│ ├── __main__.py # Entry point
|
||||
│ ├── cli.py # CLI interface
|
||||
│ ├── config.py # Configuration management
|
||||
│ ├── git_utils.py # Git operations
|
||||
│ ├── ollama_client.py # Ollama integration
|
||||
│ ├── message_generator.py # Commit message generation
|
||||
│ ├── changelog_generator.py # Changelog generation
|
||||
│ └── interactive.py # Interactive mode
|
||||
├── prompts/
|
||||
│ ├── commit_message.txt
|
||||
│ └── changelog.txt
|
||||
├── tests/
|
||||
│ ├── test_cli.py
|
||||
│ ├── test_git_utils.py
|
||||
│ ├── test_message_generator.py
|
||||
│ ├── test_changelog_generator.py
|
||||
│ └── conftest.py
|
||||
├── pyproject.toml
|
||||
├── requirements.txt
|
||||
└── README.md
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
MIT
|
||||
Reference in New Issue
Block a user