AI generated commit messages
Project description
aiautocommit
Generate intelligent commit messages using AI. aiautocommit analyzes your staged changes and creates conventional commit messages, handling both small tweaks and large changesets effectively.
Yes, there are a lot of these. Main ways this is different:
- Simple codebase
- Ability to easily customize prompts on a per-repo basis
Installation
pip install aiautocommit
Features
- Generates conventional commit messages
- Customizable prompts and exclusions
- Pre-commit hook integration
- Supports custom config directories
Getting Started
Set your OpenAI API key:
export OPENAI_API_KEY=<YOUR API KEY>
Stage your changes and run aiautocommit:
git add .
# this will generate a commit message and commit the changes
aiautocommit commit
# or, just to see what it will do
aiautocommit commit --print-message
Customization
Logging
First, you'll want to enable logging so you can extract the diff and prompt and iterate on it in ChatGPT:
export AIAUTOCOMMIT_LOG_LEVEL=DEBUG
export AIAUTOCOMMIT_LOG_FILE=aiautocommit.log
Now, you'll have a nice log you can tail and fiddle with from there.
Using Config Directory
aiautocommit looks for configuration files in these locations (in priority order):
- .aiautocommit/ in current directory
- $XDG_CONFIG_HOME/aiautocommit/ (defaults to ~/.config/aiautocommit/)
- Custom path via aiautocommit_CONFIG environment variable
To get started with customization:
aiautocommit dump-prompts
This creates a .aiautocommit/
directory with:
diff_prompt.txt
: Template for generating diff summariescommit_prompt.txt
: Template for generating commit messagesexclusions.txt
: List of files to exclude from processingcommit_suffix.txt
: Static suffix to append to commit messages. Useful for trailers.
Installing Pre-commit Hook
To automatically generate commit messages during git commits:
aiautocommit install-pre-commit
Learn more about git hooks here.
Lefthook Configuration
Lefthook is an excellent tool for managing git hooks. To use aiautocommit with lefthook, add the following to your .lefthook.yml
:
prepare-commit-msg:
commands:
aiautocommit:
run: aiautocommit commit --output-file "{1}"
interactive: true
env:
# without this, lefthook will run in an infinite loop
LEFTHOOK: 0
# ensures that LOG_LEVEL config of the current project does not interfere with aiautocommit
LOG_LEVEL: info
OPENAI_LOG: warn
skip:
merge:
rebase:
# only run this if the tool exists
run: ! which aiautocommit > /dev/null
Environment Variables
OPENAI_API_KEY
: Your OpenAI API keyAIAUTOCOMMIT_OPENAI_API_KEY
: Unique API key for OpenAI, overridesOPENAI_API_KEY
(useful for tracking or costing purposes)AIAUTOCOMMIT_MODEL
: AI model to use (default: gpt-4-mini)AIAUTOCOMMIT_CONFIG
: Custom config directory pathLOG_LEVEL
: Logging verbosityAIAUTOCOMMIT_LOG_PATH
: Custom log file path
Privacy Disclaimer
gpt-commit
uses the OpenAI API to generate commit messages. Both file names and contents from files that contain staged changes will be shared with OpenAI when using gpt-commit
. OpenAI will process this data according to their terms of use and API data usage policies. On March 1st 2023 OpenAI pledged that by default, they would not use data submitted by customers via their API to train or improve their models, and that this data will be retained for a maximum of 30 days, after which it will be deleted.
Special Thanks
This project inspired this project. It had a very simple codebase. I've taken the idea and expanded it to include a lot more features, specifically per-project prompt customization.
Related Projects
I looked at a bunch of projects before building this one.
- https://github.com/abi/aiautocommit - python, inactive. Many files, not simple.
- https://github.com/Sett17/turboCommit - rust, inactive.
- https://github.com/Nutlope/aicommits - typescript. Node is so slow and I hate working with it.
- https://github.com/Elhameed/aicommits - python
- https://github.com/zurawiki/gptcommit - active, rust. Too complicated and no prompt customization.
- https://github.com/ywkim/gpt-commit - lisp, inactive.
- https://github.com/markuswt/gpt-commit - single file, python based. No commits > 1yr. Very simple codebase.
- https://github.com/josenerydev/gpt-commit - also python
- https://github.com/di-sukharev/opencommit - has conventional commit structure
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file aiautocommit-0.7.0.tar.gz
.
File metadata
- Download URL: aiautocommit-0.7.0.tar.gz
- Upload date:
- Size: 9.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.4.30
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d9848ce60fa95dcf25c1bd6d2a099d9b9279849e8b555c4c27d8f307ba49678f |
|
MD5 | 26218b41c531b2895ede345a403f0f98 |
|
BLAKE2b-256 | 925ba7afa8c8adf178c702fda1af08af8fa83efe7f17998057856f62f694c374 |
File details
Details for the file aiautocommit-0.7.0-py3-none-any.whl
.
File metadata
- Download URL: aiautocommit-0.7.0-py3-none-any.whl
- Upload date:
- Size: 9.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.4.30
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d26b0334112fd48d6fa1f66f96efb8b10b892804a94e3ab285975c1ab0b6edbc |
|
MD5 | a8c03f01b4889dd2715e82e08402b58d |
|
BLAKE2b-256 | 01d34eff9183083257eae12eea140b360beb49abbcbc468922bccc9e47c2eae4 |