A tool to automatically generate git commit messages using an LLM.
Project description
AutoCommitMessage
AutoCommitMessage is a command-line tool that uses the power of Large Language Models (LLMs) to automatically generate descriptive and well-formatted git commit messages based on your staged changes.
Features
- AI-Powered Commits: Leverages Google's Gemini models via LangChain to analyze your code differences and generate meaningful commit messages.
- Free to Use: This tool includes a wrapper around the Google API to ensure that your usage stays within the free tier, so you can use it without charge with your own Google API key.
- Conventional Commits: Follows the Conventional Commits specification to produce a clean and readable commit history. The generated messages include a type (e.g.,
feat,fix,refactor), an optional scope, and a concise description. - Seamless Git Integration: Integrates directly with your local Git repository to automatically detect staged files.
- Extensible and Testable: Built with a modular structure, making it easy to test and extend. The project includes unit, end-to-end, and LLM quality tests.
Installation
-
Install from PyPI (Recommended): You can install the tool directly using pip.
pip install autocommitmessage
-
Or, Install from source (for development): If you want to contribute to the project, you can install it from the source code.
-
Clone the repository:
git clone <your-repo-url> cd autocommitmessage
-
Install dependencies: The project uses
setuptoolsfor packaging. It's recommended to do this in a virtual environment.pip install .
For development and running tests, install the testing dependencies:
pip install .[dev]
-
Usage
After installing, you can use autocommitmessage in any of your own Git repositories.
Setting Your API Key
The tool requires a Google API key to function. You must set this key in a .env file within the root directory of the repository you are working on.
- Navigate to your project's root directory:
cd /path/to/your-project
- Create a
.envfile. If you cloned the repository for development, you can copy the example file:cp .env.example .env
Then, add your API key:# your-project/.env GOOGLE_API_KEY="your_google_api_key_here"
Generating a Commit Message
-
Stage your changes: Use
git addto stage the changes you want to commit.git add <file1> <file2>
-
Generate the commit message: Run the
autocommitmessagecommand.autocommitmessage
The tool will then output a generated commit message based on the staged diff.
Development and Testing
If you are contributing to the project, you will need to set up your environment for testing.
Langsmith Setup (for LLM Quality Tests)
- Add Langsmith keys to your
.envfile:LANGCHAIN_API_KEY="your_langchain_api_key" LANGCHAIN_TRACING_V2="true" LANGCHAIN_ENDPOINT="[https://api.smith.langchain.com](https://api.smith.langchain.com)" LANGCHAIN_PROJECT="your_project_name" - You can get the
LANGCHAIN_PROJECTname by running thelangsmith_ini.pyscript:python tests/langsmith/langsmith_ini.py
Running Tests
This project uses pytest for testing. The tests are organized into three categories: unit, end-to-end (e2e), and LLM quality (llm).
To run all tests:
pytest
Project details
Release history Release notifications | RSS feed
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file autocommitmessage-0.1.4.tar.gz.
File metadata
- Download URL: autocommitmessage-0.1.4.tar.gz
- Upload date:
- Size: 8.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1b2e395532e62078cb3b668ff8477a6cc6ea5d9dcc1b016358eb1dbd272ed252
|
|
| MD5 |
0a24f7c7142a371e41326c42cda8e76e
|
|
| BLAKE2b-256 |
7c357a854e7109eca523aa064a959350eb50325ba04b36cf7018c58631f4535a
|
File details
Details for the file autocommitmessage-0.1.4-py3-none-any.whl.
File metadata
- Download URL: autocommitmessage-0.1.4-py3-none-any.whl
- Upload date:
- Size: 8.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1f105b599817af4f50e5e746dbb71f165f2152a441b84bfb792456af6f65bd84
|
|
| MD5 |
fa0de9dbcb9bc901ddf84042b07e15e1
|
|
| BLAKE2b-256 |
92cd835c125e873a3f49c9d4d270fd01d2a9cc14a615931c385854f85e0203d7
|