wtt

Crates.iowtt
lib.rswtt
version0.0.5
created_at2026-01-14 03:10:29.092037+00
updated_at2026-01-16 21:55:02.605294+00
descriptionGit worktree manager using bare clones
homepage
repositoryhttps://github.com/mbj/mrs/tree/main/wtt
max_upload_size
id2042042
size56,435
Markus Schirp (mbj)

documentation

README

wtt - Work Tree Tool

Overview

CLI tool for managing git worktrees using bare clones.

Installation

From a repository checkout:

cargo install --path wtt

Paths

Type Default Location
Config ~/.config/wtt.toml
Bare clones ~/.local/share/wtt/bare/<repo>.git
Worktrees ~/devel/<repo>/<branch>/

Branch names containing / become subdirectories (e.g., feature/login~/devel/myrepo/feature/login/).

Configuration

Configuration is loaded from ~/.config/wtt.toml by default. All fields are optional.

bare_clone_dir = "/path/to/bare/clones"
worktree_dir = "/path/to/worktrees"

CLI Flags

Flag Description
--config-file <PATH> Load configuration from specified file
--no-config-file Disable configuration file loading

Commands

setup

Create bare clone and prepare worktree directory.

wtt setup <REPO> <URL>
  • <REPO> - Local name for the repository
  • <URL> - Git remote URL to clone
  • Clones bare repo to ~/.local/share/wtt/bare/<repo>.git
  • Creates empty ~/devel/<repo>/ directory

teardown

Remove a repository completely (inverse of setup).

wtt teardown [OPTIONS] <REPO>
  • <REPO> - Repository name to remove
  • --force - Force removal of worktrees with uncommitted changes
  • Removes all worktrees
  • Removes bare clone at ~/.local/share/wtt/bare/<repo>.git
  • Removes worktree directory at ~/devel/<repo>/

add

Create a worktree.

wtt add [OPTIONS] <BRANCH>
  • <BRANCH> - Branch name for the new worktree
  • --base <BASE> - Base ref for new branches (default: remote default branch)
  • --repo <REPO> - Repository name (default: auto-detected from current directory)
  • Auto-detects existing vs new branch:
    • If branch exists (local/remote): checkout
    • If branch doesn't exist: create from base
  • Configures upstream tracking to origin/<branch> via git config, so git push and git pull work without additional flags, even for new branches that don't exist on the remote yet

list

List worktrees.

wtt list [OPTIONS]
  • --repo <REPO> - Repository name (default: auto-detected, or list all if outside worktree)

remove

Remove a worktree.

wtt remove [OPTIONS] <BRANCH>
  • <BRANCH> - Branch name of the worktree to remove
  • --repo <REPO> - Repository name (default: auto-detected from current directory)
  • Deletes worktree directory only, does not delete the branch
Commit count: 636

cargo fmt