Skip to content

Releases: niklas-heer/repot

repot v0.3.0

Choose a tag to compare

@github-actions github-actions released this 27 Sep 14:26

repot v0.3.0

This release makes repot fast and a little bit smart: status asks GitHub
once instead of fetching everything, the picker knows where you actually work,
and new commands help you find, open, clean up and start repositories.

Highlights

  • Status in about two seconds. Before fetching, repot asks GitHub for every
    branch tip in a few batched requests (through gh, when it is installed and
    signed in). Checkouts that are already current are not fetched at all; the
    footer says how many GitHub confirmed. Everything else opens a single
    connection, 24 at a time, and sync updates each checkout as soon as its own
    inspection finishes. On 45 real checkouts, status went from 17 s in v0.2.0 to
    about 2 s.
  • Recommendations that fit. The report separates checkouts held back by
    local changes
    , work in progress with nothing new upstream, and those that
    need review, and suggests the exact next command, such as
    git push -u origin feature or repot publish.
  • A picker that knows where you work. The shell integration remembers which
    repositories you switch to, and the picker lists the ones you use most and most
    recently first. On wide terminals it previews the selected repository's branch,
    changes and recent commits. repot shell-init <shell> --no-track turns tracking
    off.
  • repot info shows a repository's branch, changes, remote, visits and
    recent commits; repot open opens it in your editor or, with --web, on
    GitHub.
  • repot doctor finds stale copies left behind by renames and transfers on
    GitHub, archived and missing repositories, and checkouts in the wrong folder.
    Every finding comes with the command that fixes it, and --fix applies them
    after asking. Work that exists only in a stale copy is always shown first.
  • repot stale lists repositories you have not touched in 90 days as
    candidates to archive; repot status reminds you at most once a week.
  • repot new NAME --template SOURCE starts a project from a template's files,
    without its history and without committing.
  • Faster everywhere. Subprocesses are awaited instead of polled, the check
    for ignored files before an update went from 10 s to 5 ms on large build
    directories, and restore and clone --parallel share one work queue.

Compatibility

JSON output, exit codes and command names are unchanged. repot's own Git
operations now label their reflog entries "repot", so a repot sync
fast-forward no longer counts as you touching a repository. Visits are kept in
~/.local/state/repot/visits, a small local text file you can delete at any
time.

Install

brew install niklas-heer/tap/repot

Or build the pinned release through Nix:

nix profile install github:niklas-heer/repot/v0.3.0

Release archives cover macOS and Linux on x86-64 and ARM64; verify them against
SHA256SUMS. After upgrading, restart your shell or re-source the output of
repot shell-init so directory tracking is active.

See the user guide.

repot v0.2.0

Choose a tag to compare

@github-actions github-actions released this 27 Sep 03:03

repot v0.2.0

This release makes repot pleasant to use from a terminal: a status report
that shows what needs attention, a fuzzy picker that stays out of your way, and
command names that make sense on first contact. Homebrew installs now come from
the shared niklas-heer/tap.

Highlights

  • Status you can read at a glance. repot status and repot sync group
    checkouts by what they need: failed, needs review, ready to push, ready to
    update, and a compact per-owner summary of everything up to date. Each row
    shows the branch, commits behind (↓) or ahead (↑), and staged, modified,
    untracked and stashed work. The footer suggests the next step.
  • Live progress. A spinner with a counter shows fetching, cloning and
    updating as it happens.
  • An inline picker. repot cd opens directly under your prompt instead of
    taking over the screen, so the output you were reading stays visible. It is
    never taller than the results and erases itself when you are done.
  • Commands named for what you want to do. cd jumps to a repository,
    clone clones, new owner/name creates an empty repository in the tree next to
    new name for scratch projects, and scan finds strays. Run repot --help
    for a task-grouped overview with the version and a small logo.
  • Clearer failures. Errors say what went wrong and what to try next, and
    mistyped commands or options get a suggestion.
  • Nushell works like the other shells. The wrapper no longer captures
    repot's output, which previously forced the plain script format and hid all
    progress. Report commands can be piped: repot status --json | from json.

Compatibility

Every earlier command name keeps working: jump, get, find, and the hidden
create and migrate. --json output and the tab-separated piped format are
unchanged, as are the MCP tool names. status and sync now inspect eight
repositories at a time by default instead of four; --jobs still overrides it.

Install

brew install niklas-heer/tap/repot

If you installed from the former niklas-heer/repot tap, brew update moves
repot to the shared tap; afterwards run brew untap niklas-heer/repot.

Or build the pinned release through Nix:

nix profile install github:niklas-heer/repot/v0.2.0

Release archives cover macOS and Linux on x86-64 and ARM64; verify them against
SHA256SUMS. After upgrading, restart your shell or re-source the output of
repot shell-init so the new wrapper is active.

See the installation guide
and the user guide.

repot v0.1.0

Choose a tag to compare

@github-actions github-actions released this 26 Sep 23:42

repot v0.1.0

The first release of repot brings a complete Git repository workflow to Linux
and macOS: organise a ghq-compatible tree, jump between projects, safely update
checkouts, publish experiments and restore your setup on another machine.

Highlights

  • Find your next project quickly. A built-in fuzzy picker, shell directory
    switching and completions for Bash, Zsh, Fish and Nushell. Neither ghq nor fzf
    is required.
  • Keep checkouts current. Bulk status and fast-forward sync, with bounded
    concurrency, JSON output and a cached-ref dry run. Safely merged feature
    branches can return to the remote's default branch when their work is proven
    preserved; ambiguous cases remain for review.
  • Start local, publish when ready. Create scratch repositories, then publish
    to GitHub or GitLab with explicit visibility and recoverable partial progress.
  • Bring your repositories with you. Find scattered checkouts, adopt or
    register them in place, and restore missing entries from a portable TOML,
    KDL v2 or YAML manifest. Registration preserves comments and symlinks into dotfiles.
  • Keep existing Git workflows. Multiple ghq roots, SSH and HTTPS URLs,
    recursive clones, bare repositories, AWS CodeCommit and bounded Go vanity
    discovery are supported. Legacy non-Git VCS backends are intentionally outside
    the scope of repot.
  • Work with agents. repot agent-guide exposes an offline guide to
    noninteractive commands, structured reports and safe automation. A local stdio
    MCP server integrates with compatible agent clients.
  • Recover removed checkouts. repot rm archives the complete checkout,
    including dirty and ignored files, the index, commits and stashes.

Safety by default

repot never commits, stashes, resets, rebases or force-pushes. Every mutating
command supports --dry-run. Sync only fast-forwards clean checkouts and never
pushes or deletes branches. Dirty, divergent or otherwise uncertain work is
reported for review. Restore leaves occupied destinations untouched, and archive
restoration refuses to overwrite an existing path.

The implementation is Rust, with native Git reads where parity has been verified.
Git remains responsible for authentication, networking and checkout mutations.
Correctness is checked through binary end-to-end tests, deterministic repository
and manifest simulations, terminal tests, and native, container and Nix gates.

Install

Release archives cover macOS and Linux on x86-64 and ARM64. Linux builds target
glibc. Download the matching archive and verify it against SHA256SUMS; each
archive includes the binary, license and documentation.

brew tap niklas-heer/repot https://github.com/niklas-heer/repot
brew install niklas-heer/repot/repot

Or build the pinned release through Nix:

nix profile install github:niklas-heer/repot/v0.1.0

Git is required for repository operations and is supplied by the Homebrew and Nix
packages. Publishing additionally uses gh or glab. AWS CodeCommit transport
uses Git's CodeCommit helper; AWS CLI is needed only for fallback region lookup.

Follow the quick start,
installation guide
or configuration reference.