turbocommit is a Rust-based CLI tool that generates high-quality git commit messages in accordance with the Conventional Commits specification, using OpenAI's

Overview

turbocommit

Crates.io Crates.io (recent) Crates.io

turbocommit is a CLI tool written in Rust that generates commit messages in accordance with the Conventional Commits specification. It uses the git diff to create commit messages that accurately reflect the changes made to a repository.

Installation

turbocommit can be easily installed with Cargo, Rust's package manager. Simply run the following command:

cargo install turbocommit

Please note that in order to use turbocommit, you will need to set the OPENAI_API_KEY environment variable. This API key is required to use the OpenAI gpt-3.5-turbo language model, which is used by turbocommit to generate commit messages.

Usage

Generating Conventional Commits with turbocommit

To use turbocommit, simply run the command turbocommit in your terminal.

$ turbocommit

This will generate one choice for the commit message and ask you whether you want to commit with it. You can then choose to commit with the generated message or not.

turbocommit example


You can also pass in extra information to the AI to influence the generated commit message. Simply add the information as an argument to the command.

$ turbocommit this is extra information

This will pass the extra information to the AI to generate the commit message.


Additionally, you can generate multiple choices for the commit message by using the -n option followed by the number of choices you want to generate.

$ turbocommit -n 3

This will generate three choices from which you can choose which one to commit with.

turbocommit example with multiple choices

You can also pass in extra information to the AI to influence the generation of multiple choices by adding it as an argument.

$ turbocommit -n 2 make it sound like a pirate

This will generate three choices and pass the extra information to the AI to generate the commit messages.

turbocommit example with multiple choices and extra information

Handling Long git diff

In some cases, the git diff for staged changes may be too long to fit within the 4096-token limit enforced by the language model, which turbocommit uses to generate commit messages. When this happens, turbocommit will prompt you with a message indicating that the git diff is too long.

To address this, turbocommit provides a list of all staged files and ask you to select any number of them. The tool will then generate a new git diff that includes only the changes from the selected files. If the resulting git diff plus the system prompt is still too long, turbocommit will repeat the process until the git diff is short enough to be processed by the AI model.

This allows you to generate conventional commit messages with turbocommit while ensuring that the git diff is short enough to be processed by the AI model.

Getting Help with turbocommit

To get help with using turbocommit, you can use the -h or --help option

$ turbocommit --help

This will display the help message with information on how to use the tool.

You might also like...
dhcpm is a CLI tool for constructing & sending DHCP messages

dhcpm Sponsor Thank you to Bluecat for sponsoring this work! dhcpm leverages dhcproto check that out for the DHCP protocol. About A cli tool (and dhcp

A git sub-command to view your git repository in the web browser
A git sub-command to view your git repository in the web browser

git-view A git sub-command to view your git repository in the web browser! About Are you also frustrated from moving your hands away from the keyboard

CLI for video images. Generates animated video contact sheets fast.

vimg CLI for video images. Generate animated video contact sheets fast. Uses ffmpeg. Note: Support for animated avif isn't everywhere yet, try viewing

Bracket QOS - a Quality of Service/Experience server system writtin in Rust. Derived from the excellent LibreQOS Project.

Bracket QOS - Open Source Edition This project is based on the excellent LibreQOS project. It is hoped that this can be useful for the upstream projec

Cli tool for git productivity written in Rust and packaged for consumption via NPM
Cli tool for git productivity written in Rust and packaged for consumption via NPM

crust 🍞 cli tool for git productivity written in Rust and packaged for consumption via NPM This repo is identical with @skyneticist/golee in terms of

A validations framework for doing quality control in studios.

Untitled Checks Framework Overview This framework is designed to provide a system to write checks for studio work. This includes validating assets (ri

Tight Model format is a lossy 3D model format focused on reducing file size as much as posible without decreasing visual quality of the viewed model or read speeds.
Tight Model format is a lossy 3D model format focused on reducing file size as much as posible without decreasing visual quality of the viewed model or read speeds.

What is Tight Model Format The main goal of the tmf project is to provide a way to save 3D game assets compressed in such a way, that there are no not

A quality of life package for Anchor.

anchor-cereal A quality of life package for Anchor made to support the Solana ecosystem. Currently, it allows you to serialize a struct containing an

Rust SDK for the core C2PA (Coalition for Content Provenance and Authenticity) specification

C2PA Rust SDK The Coalition for Content Provenance and Authenticity (C2PA) addresses the prevalence of misleading information online through the devel

Comments
  • chore: Update tiktoken-rs to use optional python bindings

    chore: Update tiktoken-rs to use optional python bindings

    This updates the tiktoken-rs dependency to use optional python bindings so that it does not compile the bindings by default. The Cargo.toml now uses a git dependency to fetch the dependency from the specified branch. The Cargo.lock file has been updated to reflect these changes.

    opened by Sett17 0
Owner
Sett
Corporate Student
Sett
⚗️ Superfast CLI interface for the conventional commits commit format

resin ⚗️ Superfast CLI interface for the conventional commits commit format ❓ What is resin? resin is a CLI (command-line interface) tool that makes i

Matt Gleich 23 Oct 12, 2022
⚗️ Superfast CLI interface for the conventional commits commit format

resin ⚗️ Superfast CLI interface for the conventional commits commit format ❓ What is resin? resin is a CLI (command-line interface) tool that makes i

Matt Gleich 23 Oct 12, 2022
Command line tool to make conventional commit messages

Commit This project is a copy of cz-cli with some minor changes. I made this project for my own use, because I don't want to mess with the original cz

Pedro Mendes 80 Dec 26, 2022
Automatically commit all edits to a wip branch with GPT-3 commit messages

gwipt Automatic work-in-progress commits with descriptive commit messages generated by GPT-3 Codex Never again worry about the tension between "commit

Ben Weinstein-Raun 113 Jan 25, 2023
A CLI tool that uses ChatGPT to automatically generate commit messages.

Auto Git Commit This project is a tool that uses the OpenAI GPT model to automatically generate commit messages for Git commits based on the changes m

XIAO YU 16 Mar 5, 2024
AI-TOML Workflow Specification (aiTWS), a comprehensive and flexible specification for defining arbitrary Ai centric workflows.

AI-TOML Workflow Specification (aiTWS) The AI-TOML Workflow Specification (aiTWS) is a flexible and extensible specification for defining arbitrary wo

ruv 20 Apr 8, 2023
Check a folder for dirty git repositories, forgotten branches and commits

dg - find dirty git repos Ever forgot to push a commit or lost your work because you assumed it was pushed to Github but it wasn't? dg finds local git

Dotan J. Nahum 11 Mar 19, 2023
A Rust CLI tool that helps you enforce Git policies through Git hooks both server and client side

GitPolicyEnforcer This is a command line utility written in Rust, that helps you utilize Git hooks, to enforce various policies. It currently supports

Vagelis Prokopiou 4 Aug 14, 2022
Git Explorer: cross-platform git workflow improvement tool inspired by Magit

Gex Git workflow improvement CLI tool inspired by Magit. This project is still under initial development, but I am actively dogfooding it and features

Peter Hebden 204 Jan 6, 2023
Enhance low quality images and videos using AI technology.

Real ESRGAN GUI Real ESRGAN GUI is a simple and minimal GUI for xinntao's Real-ESRGAN This allows you to enhance low quality images and videos using A

null 20 Dec 21, 2022