Rewrites Git commit history with LLM-generated messages. Supports Llama3, OpenAI, Groq, Replicate, Ollama.
- Clone repository
- Extract diffs
- Generate messages via LLM
- Rewrite history
- Force-push (optional)
- Python 3.11+
- Poetry
- Git repository
- API keys for chosen LLM provider
git clone https://github.com/octrow/OCDG.git
cd OCDG
python3 -m venv .venv
source .venv/bin/activate
poetry install
poetry shellcp .env.example .envSet API keys in .env:
NVIDIA_API_KEY- OpenAI clientGROQ_API_KEY- Groq clientREPLICATE_API_TOKEN- Replicate client- Ollama - no key (local)
Ollama install: https://ollama.com/
python main.py <repo_path> [-b <backup_dir>] [-l <llm_choice>] [-m <model>] [-f] [-r]repo_path- Local path or remote URL-b- Backup directory-l- LLM provider (ollama|openai|groq|replicate), default:ollama-m- Model name-f- Force push-r- Restore backup
python main.py /path/to/repo
python main.py https://github.com/user/repo -l groq -m llama3-70b-8192
python main.py /path/to/repo -l openai -m meta/llama3-70b-instruct -f
python main.py /path/to/repo -rdocker build -t ocdg .
docker run --rm -v $(pwd)/repos:/app/repos --env-file .env ocdg /app/repos/your-repocp .env.example .env
docker-compose run --rm ocdg /app/repos/your-repo -l groq
docker-compose --profile local-llm up -d ollama
docker-compose run --rm ocdg /app/repos/your-repo -l ollama- Async concurrent processing
- Automatic Git backup/restore
- Exponential backoff retry logic (3 retries, 1s→2s→4s)
- Intelligent diff chunking for large commits
- JSON schema validation for LLM responses
- Multi-provider LLM support
- Configurable ignore patterns for binaries/dependencies
- Docker and Docker Compose support
main.py- Orchestration, diff analysis, rewritingclients/- LLM implementations (base, ollama, openai, groq, replicate)config.py- Environment config, ignore patternsretry_utils.py- Exponential backoff decoratortest_ocdg.py- Tests
Classes: GitAnalyzer, Commit, CommitHistory, RepositoryUpdater
Edit config.py IGNORED_SECTION_PATTERNS and IGNORED_LINE_PATTERNS to exclude paths from diffs.
Default excludes: venv/, .idea/, node_modules/, __pycache__/, binaries, lock files, logs
- Refs backup before modifications
- User confirmation required
- Auto-restore on errors
- Force-push needs
-f
Max 3 retries, exponential backoff: 1s → 2s → 4s (max 60s)
- Beta
- Non-TTY rebase may fail
- Large repos memory-intensive
- No incremental processing
See CONTRIBUTING.md
MIT
octrow octrow@yandex.ru