sluuz 0.3.1

git, but it sleuths β€” a git superset with cross-repo search, secret scanning, and multi-repo management
sluuz-0.3.1 is not a library.

sluuz

git, but it sleuths. πŸ•΅οΈ

sluuz is a drop-in git superset. The command you type is the short slu, and every git command still works exactly as before β€” slu commit, slu push, slu log all pass straight through to git. On top of that you get superpowers a shell alias could never give you: pickaxe a string through every branch of every repo at once, audit history for leaked secrets, and manage many repos in one go.

The name? It's for people who like sleuthing through git history.

Install

cargo install sluuz

This installs a single command: slu β€” three letters, same length as git itself. Update later with slu update (or cargo install sluuz --force).

It's just git… until it isn't

Anything git understands is forwarded verbatim, with your editor, pager, prompts, colors, and exit codes intact:

slu commit -m "fix"
slu push
slu rebase -i HEAD~3
slu log --oneline

Then come the superpowers.

slu search β€” sleuth a string through history

Uses git's pickaxe (git log -S) across all branches, then shows the matching commit, the file(s) the change touched, and the branches that contain it. Being pickaxe-based, it even finds matches inside binary/encrypted blobs.

slu search "api_key"             # this repo, all branches
slu search -r "password"         # recurse into every repo under the current dir
slu search -r -l 50 "secret"     # up to 50 commits per repo (default 20)

Matching is case-sensitive (pickaxe is precise by nature).

slu scan β€” audit repos for leaked secrets

Sweeps every commit on every branch for a list of sensitive terms (case-insensitive) and reports each hit with its commit, branch, and file β€” including secrets committed in binary/encrypted files.

slu scan                              # scan repos under the current dir
slu scan /path/to/projects            # a specific path
slu scan -t "aws,bearer,token"        # custom terms (default: password,secret,token,…)

slu repos β€” state of every repo at a glance

A dashboard of every repo under a path: current branch, uncommitted files, and how far ahead/behind its upstream it is.

slu repos                # all repos under the current dir
slu repos --dirty        # only repos needing attention

Legend: ✚ uncommitted Β· ↑ unpushed commits Β· ↓ unpulled commits

slu sync β€” fetch (and optionally fast-forward) every repo

Fetches and prunes all repos in parallel. With --pull it also runs git pull --ff-only, which fast-forwards safely and refuses rather than merging when it can't β€” so it never creates merge commits or conflicts.

slu sync                 # fetch + prune all repos
slu sync --pull          # also fast-forward the current branch where safe

slu tidy β€” find merged, deletable branches

Lists local branches already merged into your current branch (safe to delete), with how long since each was last touched and a ready-to-paste delete command.

slu tidy                 # repos with cleanup to do
slu tidy --all           # include repos with nothing to clean up

slu each β€” run any git command across all repos

The catch-all multi-repo power tool: whatever you'd type after git, run it in every repo under you, in parallel.

slu each pull --ff-only
slu each switch main
slu each "log --oneline -1"

slu update β€” update sluuz itself

slu update               # cargo install sluuz --force, the easy way

Common options

The multi-repo commands accept a path argument (defaults to .) and -d, --depth <N> β€” how many directory levels deep to look for repos (default 3).

License

AGPL-3.0-only