Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/Sett17/turboCommit

turbocommit is a Rust-based CLI tool that generates high-quality git commit messages in accordance with the Conventional Commits specification, using OpenAI's `gpt-3.5-turbo` language model. It is easy to use and a cost-effective way to keep git commit history at a higher quality, helping developers stay on track with their work.
https://github.com/Sett17/turboCommit

Last synced: about 2 months ago
JSON representation

turbocommit is a Rust-based CLI tool that generates high-quality git commit messages in accordance with the Conventional Commits specification, using OpenAI's `gpt-3.5-turbo` language model. It is easy to use and a cost-effective way to keep git commit history at a higher quality, helping developers stay on track with their work.

Awesome Lists containing this project

README

        

# turbocommit

![Crates.io](https://img.shields.io/crates/v/turbocommit)
![Crates.io](https://img.shields.io/crates/d/turbocommit)
![Crates.io](https://img.shields.io/crates/l/turbocommit)

[`turbocommit` is a CLI tool written in Rust](https://crates.io/crates/turbocommit) that generates commit messages in accordance with the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) 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:

```bash
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-turbo16k` language model, which is used by turbocommit to generate commit messages.

## Usage

When you have staged some changes, you can run the `turbocommit` (I recommend making a `tc` symlink)

![](example.gif)

### Generating Conventional Commits with `turbocommit`

| Short | Long | Description | Default |
| ----- | ------------ | ------------------------------------------- | :--------------: |
| -n | | Number of choices to generate | 1 |
| -m | --model | Model to use | gpt-3.5-turbo16k |
| -d | --dry-run | Dry run. Will not ask AI for completions | |
| -p | --print-once | Will not print tokens as they are generated | |
| -t | | Temperature (t \|0.0 < t < 2.0\|) | 1.0 |
| -f | | Frequency penalty (f \|-2.0 < f < 2.0\|) | 0.0 |

### Available Models

| Name | Context Window | Cost Input | Cost Output |
| ------------------- | -------------- | ---------- | ----------- |
| `gpt-3.5-turbo` | `4096` | 0.0015 | 0.002 |
| `gpt-3.5-turbo-16k` | `16384` | 0.003 | 0.004 |
| `gpt-4` | `8192` | 0.03 | 0.06 |
| `gpt-4-32k` | `32768` | 0.06 | 0.12 |

### Handling Long `git diff`

In some cases, the `git diff` for staged changes may be too long to fit within the 16384 (or 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

```bash
$ turbocommit --help
```

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