Skip to main content

A CLI tool for generating editable commit messages locally using Ollama.

Project description

4

AutoCommit is a free and open-source AI-powered CLI tool that generates unlimited commit messages locally using Ollama. It works entirely offline, requiring no API keys, providing developers with a private and efficient way to create concise, context-aware commit messages.

Python PyPI version PyPI Downloads

Features

  • Local AI-Powered: Generates commit messages using a small LLM models locally
  • Flexible Editing: Review and edit generated messages before committing
  • Git Integration: Seamlessly works with your existing Git workflow
  • Multiple Language Model Support: Option to choose different local AI models

Setup

Prerequisites

  • Ollama: Download and install ollama from offical website.
  • RAM (minimum):
    • 8GB for smaller models (<=3B parameters)
    • 16GB for optimal performance
  • GPU (Optional): Boosts performance, but not required

Installation

It is recommended to use a virtual environment.

pip install autocommitt

Upgrading

Check the installed version with:

pip list | grep autocommitt

If it's not latest, make sure to upgrade.

pip install -U autocommitt

Basic Usage

  1. Start the Ollama Server

    autocommitt start
    

    Note: The Ollama server starts automatically after installation. However, running this command ensures that all configuration files are updated and a default model is properly set up.

  2. Stage Your Changes
    Stage the files you want to commit using Git:

    git add <files...>
    
  3. Generate and Edit Commit Messages
    Generate a commit message based on your staged changes:

    autocommitt gen
    
    • The tool generates a message and allows you to review and edit it before committing.

    • To automatically push the commit to the remote repository, use the -p or --push flag:

      autocommitt gen -p
      

    Pro Tip: Save time by using the --push flag to combine committing and pushing into a single step.

  4. Stop the Ollama Server
    To free up resources after you're done, stop the Ollama server:

    autocommitt stop
    

    Note: This command is supported only on Linux. On Windows and macOS, the Ollama server runs continuously as long as the machine is active.

Pro Tip: You can use the act alias for autocommitt throughout, making commands shorter and quicker to type!

Additional Commands

By default, AutoCommitt uses the llama3.2:3b model to generate commit messages.

1. Using a Custom Model

  • To view the list of available models, run the following command:
    autocommitt list
    
  • To select and set a model as active:
    autocommitt use <model_name>
    

    Note: If the model is not already downloaded, this command will pull the model by running ollama pull <model_name> and set it as the default.

2. Deleting a Model

autocommitt rm <model_name>

Note: Since models require a significant amount of memory (minimum 2GB), it is recommended to use only one model and delete the rest to free up space.

3. Viewing Commit History

Easily view recent commit messages using the his command:

autocommitt his -n 5
  • Flag Description:-n or --limit: (Optional) Specify the number of recent commit messages to retrieve. If omitted, all commit messages will be displayed.

Pro Tip: Use this command to quickly review your project's recent changes before generating new commit messages.

How It Works

It runs the git diff --staged command to gather all staged changes and processes them using a local LLM (default: llama3.2:3b provided by Ollama). The model analyzes the changes and generates a concise, context-aware commit message, ensuring privacy and avoiding external API dependencies.

Future Enhancements

  • Cross-Platform Support: Compatibility for MacOS.
  • Git Hooks Integration: Compatible with pre-commit hooks
  • Custom Templates: Support for user-defined commit message templates

Contributing

We welcome contributions! To report bugs, fix issues, or add features, visit the Issues page. Please review our Contribution Guide for setup and contribution instructions.

For discussions or real-time collaboration, join our Gitter community. Your contributions are appreciated!

Acknowledgments

We would like to express our gratitude to the following open-source projects that made AutoCommitt possible:

Special thanks to the maintainers and contributors for their outstanding work!


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

autocommitt-0.1.10.tar.gz (19.5 kB view details)

Uploaded Source

Built Distribution

autocommitt-0.1.10-py3-none-any.whl (25.4 kB view details)

Uploaded Python 3

File details

Details for the file autocommitt-0.1.10.tar.gz.

File metadata

  • Download URL: autocommitt-0.1.10.tar.gz
  • Upload date:
  • Size: 19.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for autocommitt-0.1.10.tar.gz
Algorithm Hash digest
SHA256 bd0e41abec91b505f004d2e28bd6435027c60ac830db214103ac579a267163e6
MD5 f43ea72dfd1e47b418d18ec9900274db
BLAKE2b-256 e2d78306d581dd69d4bd8228d38523339c9d8daf904cc86a01fd64fbcc2376fc

See more details on using hashes here.

File details

Details for the file autocommitt-0.1.10-py3-none-any.whl.

File metadata

  • Download URL: autocommitt-0.1.10-py3-none-any.whl
  • Upload date:
  • Size: 25.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for autocommitt-0.1.10-py3-none-any.whl
Algorithm Hash digest
SHA256 2df2451376b16cfc6b3d5aa80a68c05b50ba152b30ca2b3f42cdd6e11ab711e9
MD5 dc448e488d611564ae53de0ca9419f78
BLAKE2b-256 ebd71ca5d3b803d0d10bb8f126691de2ff6aef2f9ab3aab9a382955caff4b3c3

See more details on using hashes here.

Supported by

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