Repository navigation
Releases: niklas-heer/repot
Release list
repot v0.3.0
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 (throughgh, 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, andsyncupdates 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 featureorrepot 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-trackturns tracking
off. repot infoshows a repository's branch, changes, remote, visits and
recent commits;repot openopens it in your editor or, with--web, on
GitHub.repot doctorfinds 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--fixapplies them
after asking. Work that exists only in a stale copy is always shown first.repot stalelists repositories you have not touched in 90 days as
candidates to archive;repot statusreminds you at most once a week.repot new NAME --template SOURCEstarts 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, andrestoreandclone --parallelshare 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/repotOr build the pinned release through Nix:
nix profile install github:niklas-heer/repot/v0.3.0Release 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
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 statusandrepot syncgroup
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 cdopens 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.
cdjumps to a repository,
cloneclones,new owner/namecreates an empty repository in the tree next to
new namefor scratch projects, andscanfinds strays. Runrepot --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/repotIf 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.0Release 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
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-guideexposes 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 rmarchives 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/repotOr build the pinned release through Nix:
nix profile install github:niklas-heer/repot/v0.1.0Git 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.