Skip to main content

A tool to generate commit messages using AI

Project description

lazym

lazym is an AI-powered tool that automatically generates meaningful commit messages for your Git repositories.

lazym is inspired by jen-Ya/commitgpt

Features

  • Generates commit messages based on staged changes
  • Without the risk of leaking code snippets to external LLM services
  • Integrates seamlessly with your Git workflow
  • Uses advanced language models for intelligent message generation

Requirements

Command to pull Llama 3.1:8b model for Ollama:

$ ollama run llama3.1:8b

Installation

To install lazym, follow these steps:

  1. Ensure you have Python 3.7+ and pip installed on your system.

  2. Install lazym using pip:

    pip install lazym
    
  3. After installation, navigate to any Git repository and run the following command to set up the Git hook:

    lazym install
    

    This will install the necessary Git hook to enable automatic commit message generation.

Usage

Once installed and set up, lazym works in two ways:

  1. Automatically when you make a commit: Simply stage your changes as usual and run git commit. lazym will generate a commit message based on your staged changes.

  2. Manually by running lazym ci "<hints for LLM>": This command allows you to generate a commit message with additional context provided to the LLM.

After generating the commit message, you'll be presented with three options:

  1. Accept and commit: Use the generated message as-is and commit.
  2. Edit message: Modify the generated message before committing.
  3. Cancel commit: Abort the commit process.

This allows you to benefit from the AI-generated suggestions while maintaining full control over your commit messages. When editing, you can start with the AI-generated message and make any necessary adjustments.

Commands

  • lazym install: Install the prepare-commit-msg hook in the current Git repository.
  • lazym uninstall: Uninstall the prepare-commit-msg hook from the current Git repository.
  • lazym ci "<optional hints>": Generate a commit message with optional additional context.

Configuration

lazym can be configured using a config.ini file located at ~/.config/lazym/config.ini. The following options are available:

[DEFAULT]

  • model: The AI model to use for generating commit messages.

    • Default: "llama3.1:8b"
  • message_format: The format to apply to the generated commit message.

    • Default: "lowercase"
    • Options:
      • "lowercase": Converts the first character of the message to lowercase.
      • "sentence case": Capitalizes the first character of each sentence.
      • Any other value will keep the original format as generated by the AI.
  • prompt: The prompt template used to generate commit messages.

    • Must include the {diff} placeholder where the code changes should be inserted
    • Default: empty (uses built-in prompt)
    • You can customize this to match your team's commit message style

Example config.ini:

[DEFAULT]
model = llama3.1:8b
message_format = lowercase
prompt = 

Customizing Prompts

You can customize how lazym generates commit messages by providing your own prompt template. The prompt should:

  • Include the {diff} placeholder where the code changes will be inserted
  • Clearly specify your desired commit message format
  • Include any specific conventions or rules you want the AI to follow

Example prompts:

prompt = "Generate a conventional commit message for these changes.\nFormat: <type>(<scope>): <description>\nTypes: feat, fix, docs, style, refactor, test, chore\nKeep the message under 72 chars.\nChanges:\n{diff}"

If no prompt is specified in the config, lazym will use its built-in prompt template that follows general Git best practices.

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

lazym-0.8.1.tar.gz (9.3 kB view details)

Uploaded Source

Built Distribution

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

lazym-0.8.1-py3-none-any.whl (8.5 kB view details)

Uploaded Python 3

File details

Details for the file lazym-0.8.1.tar.gz.

File metadata

  • Download URL: lazym-0.8.1.tar.gz
  • Upload date:
  • Size: 9.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.6

File hashes

Hashes for lazym-0.8.1.tar.gz
Algorithm Hash digest
SHA256 a0f3b25ebf3db65fe259a7efe59938a76bd9d66e478de4a1de672bcec26a6624
MD5 f63b5eac615781236983073ddc39b63f
BLAKE2b-256 eab124c8419125331510c1166c1847582b30694a025fb9738c033e851d62084c

See more details on using hashes here.

File details

Details for the file lazym-0.8.1-py3-none-any.whl.

File metadata

  • Download URL: lazym-0.8.1-py3-none-any.whl
  • Upload date:
  • Size: 8.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.6

File hashes

Hashes for lazym-0.8.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6f1029065306733296f4e9bc2d6f069feb38aecaf41a1dce205698c5b266e10d
MD5 ed2a51f045d568338705ccb694ccd3d1
BLAKE2b-256 7a80b06a6c42d4b3287fb1d06b4c5a60ea54ff067fc14089d36dd6ace3aa7599

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