README.md

August 2, 2026 · View on GitHub

 ██████╗ ██╗████████╗   ██████╗ ███████╗██████╗  ██████╗ ███████╗
██╔════╝ ██║╚══██╔══╝   ██╔══██╗██╔════╝██╔══██╗██╔═══██╗██╔════╝
██║  ███╗██║   ██║█████╗██████╔╝█████╗  ██████╔╝██║   ██║███████╗
██║   ██║██║   ██║╚════╝██╔══██╗██╔══╝  ██╔═══╝ ██║   ██║╚════██║
╚██████╔╝██║   ██║      ██║  ██║███████╗██║     ╚██████╔╝███████║
 ╚═════╝ ╚═╝   ╚═╝      ╚═╝  ╚═╝╚══════╝╚═╝      ╚═════╝ ╚══════╝
                                                                 

License: MIT zshrs plugin

[PARALLEL GIT-REPO FINDER — COMPILED]

"find every repo, classify clean/dirty across threads, fzf-jump."

[NATIVE ZSHRS PLUGIN]

zsh-git-repo-cache ported to a native zshrs plugin: scan the filesystem for every git repository, cache the list, and fzf-pick one to cd into — with clean/dirty filtering.

zshrs · znative


Table of Contents


[0x00] OVERVIEW

The shell version does sudo find / -name .git plus a sequential git status per repo. The native version walks in-process and classifies clean/dirty in parallel across threads, which is the speedup.

Requires git and fzf on PATH. A repo is "clean" when git diff-index --quiet HEAD succeeds and there are no untracked files — the same test as the original.


[0x01] INSTALL

znative load MenkeTechnologies/zshrs-git-repos

Put that one line in your .zshrc. znative, zshrs's package manager, installs the plugin on the first shell start — clones it, runs cargo build --release, and zmodload -Rs the resulting libgit_repos — then loads it from the store, zero-network, on every start after. No separate install step.

Manual build

cargo build --release
zmodload -R ./target/release/libgit_repos.dylib   # .so on Linux
gitrepos --regen && gitrepos

[0x02] USAGE

gitrepos              fzf-pick any cached repo and cd to it
gitrepos --clean      only repos with a clean working tree
gitrepos --dirty      only repos with uncommitted/untracked changes
gitrepos --list       print instead of fzf/cd            (short: -l)
gitrepos --regen      rescan the filesystem and rebuild the cache
                      (bare `gitrepos regen` works too)
gitrepos --root DIR   scan root for --regen (default: $ZPWR_GIT_SCAN_ROOT or $HOME)
gitrepos --help       one-line usage                     (short: -h)

Cache file: $ZPWR_ALL_GIT_DIRS (default ~/.zsh-git-repo-cache).


[0x03] HOW IT WORKS

--regen walks the scan root once, records each .git parent in the cache file, and classifies clean/dirty across a thread pool instead of one-repo-at-a-time. Subsequent gitrepos calls read the cache and fzf-pick; the cd is delegated to the shell so $PWD/hooks stay correct.


[0xFF] LICENSE

MIT. See LICENSE.