From 52fae68b23cd2517232af132b424e88cd739b19a Mon Sep 17 00:00:00 2001 From: 7000pctAUTO Date: Wed, 4 Feb 2026 17:54:24 +0000 Subject: [PATCH] Initial upload with CI/CD workflow --- app/README.md | 197 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 197 insertions(+) create mode 100644 app/README.md diff --git a/app/README.md b/app/README.md new file mode 100644 index 0000000..d708e18 --- /dev/null +++ b/app/README.md @@ -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 ` | + +## 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