Skip to main content

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

  1. Install from PyPI (Recommended): You can install the tool directly using pip.

    pip install autocommitmessage
    
  2. 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 setuptools for 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.

  1. Navigate to your project's root directory:
    cd /path/to/your-project
    
  2. Create a .env file. 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

  1. Stage your changes: Use git add to stage the changes you want to commit.

    git add <file1> <file2>
    
  2. Generate the commit message: Run the autocommitmessage command.

    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)

  1. Add Langsmith keys to your .env file:
    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"
    
  2. You can get the LANGCHAIN_PROJECT name by running the langsmith_ini.py script:
    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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

autocommitmessage-0.1.4.tar.gz (8.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

autocommitmessage-0.1.4-py3-none-any.whl (8.0 kB view details)

Uploaded Python 3

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

Hashes for autocommitmessage-0.1.4.tar.gz
Algorithm Hash digest
SHA256 1b2e395532e62078cb3b668ff8477a6cc6ea5d9dcc1b016358eb1dbd272ed252
MD5 0a24f7c7142a371e41326c42cda8e76e
BLAKE2b-256 7c357a854e7109eca523aa064a959350eb50325ba04b36cf7018c58631f4535a

See more details on using hashes here.

File details

Details for the file autocommitmessage-0.1.4-py3-none-any.whl.

File metadata

File hashes

Hashes for autocommitmessage-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 1f105b599817af4f50e5e746dbb71f165f2152a441b84bfb792456af6f65bd84
MD5 fa0de9dbcb9bc901ddf84042b07e15e1
BLAKE2b-256 92cd835c125e873a3f49c9d4d270fd01d2a9cc14a615931c385854f85e0203d7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page