shipit 0.2.0

A CLI for managing git releases
Documentation
███████╗██╗  ██╗██╗██████╗ ██╗████████╗
██╔════╝██║  ██║██║██╔══██╗██║╚══██╔══╝
███████╗███████║██║██████╔╝██║   ██║
╚════██║██╔══██║██║██╔═══╝ ██║   ██║
███████║██║  ██║██║██║     ██║   ██║
╚══════╝╚═╝  ╚═╝╚═╝╚═╝     ╚═╝   ╚═╝

Shipit is a Rust CLI that automates merge request creation on your favorite platforms with optional AI-generated notes | gitshipit.net

Buy Me A Coffee Crates.io License: MIT


Installation

Install Script (macOS/Linux/Windows)

curl -fsSL gitshipit.net/install | bash

Cargo

cargo install shipit --locked

Homebrew (macOS)

brew tap trollefson/shipit && brew install shipit

From Source

git clone https://github.com/trollefson/shipit
cd shipit
cargo build --release --locked

Or grab a pre-built binary from the releases page.


Quick start

# 1. Generate a config file at the platform default location
shipit config generate

# 2. Check the config out and edit settings with your editor
shipit config show

# 3. Ship it from the root of your project. See the command docs below for more options
shipit b2b develop main --dryrun

Optional Requirements

  • A GitHub or GitLab account and api token (GitHub / GitLab) with merge request permissions is required for merge request creation with the --dry-run option disabled
  • Ollama running locally with the model that matches your config is required for usage with the --ai option enabled

Commands

b2b — Branch to Branch

shipit b2b <source> <target> [--ai] [--dryrun] [--dir <path>] [--id <project-id>]
Argument / Flag Description
source Branch with new commits (e.g. develop)
target Destination branch (e.g. main)
--ai Enable Ollama LLM to generate categorized release notes
--dryrun Preview the merge request description without creating it
--dir <path> Path to the git repository (defaults to current directory)
--id <project-id> Project identifier — owner/repo for GitHub, numeric ID for GitLab

What happens:

  1. Finds all commits on source that aren't on target
  2. If --ai is set, sends the commit log to a local LLM running with Ollama and generate categorized release notes (features, fixes, infra, docs)
  3. Opens a merge request on GitLab or Github with the description

Examples:

# GitHub — --id uses owner/repo format
shipit b2b develop main --id owner/repo

# GitLab — --id uses a numeric project ID
shipit b2b develop main --id 12345678

# With AI-generated release notes
shipit b2b develop main --id owner/repo --ai

# Dry run — see the description without creating the MR
shipit b2b develop main --id owner/repo --ai --dryrun

# Point at a repo outside the current directory
shipit b2b develop main --id owner/repo --ai --dir /path/to/repo

config generate

Writes or overwrites a default config file to the platform config directory and prints the path.

Default config location:

  • Linux & macOS: ~/.config/shipit/default-config.toml
  • Windows: %APPDATA%\shipit\default-config.toml
shipit config generate

config show

Prints the current config file path and its contents as TOML.

shipit config show

Platform support

Platform Architecture Status
Linux x86_64
macOS x86_64
macOS aarch64
Windows x86_64


Support

If shipit saves you time, a coffee goes a long way.

Buy Me A Coffee


License

MIT