jgl
it's a jj-ungle out there
— Randy Newman, almost
Pronounced jungle /ˈdʒʌŋɡəl/. A multi-repo manager for jujutsu (jj). Register repos once and run jj commands across all of them. The name comes from the image of many repositories — each a tree of commits — growing wild and unmanaged on disk: a jungle. It also happens to sound like jj.
Install
Download the latest binary from the releases page and place it on your PATH.
Or install via cargo:
Or build from source:
# binary at target/release/jgl
Usage
Config is stored at ~/.config/jgl/config.toml (Linux/XDG) or the platform equivalent:
[[]]
= "~/projects/foo"
[[]]
= "~/projects/bar"
[]
= true # rebase onto trunk() after each fetch (default: false)
= false # allow rebase even if it introduces conflicts (default: false)
= 10 # kill fetch if silent for this many seconds; 0 disables (default: 10)
CLI flags override config: --rebase/--no-rebase, --with-conflicts/--without-conflicts, and --idle-timeout <seconds>.
SSH authentication
For SSH remotes, use an SSH agent (ssh-agent / ssh-add) so the passphrase is
unlocked once and reused across all repos. Without an agent, each fetch spawns a
fresh SSH process and may prompt for the passphrase repeatedly.
Shell completions
# bash
# zsh
# fish
|
To persist, add the source line to your shell's rc file (e.g. ~/.bashrc, ~/.zshrc).
Tech stack
Rust, single binary, no runtime deps.
Contributing
See CONTRIBUTING.md.
License
MIT, see LICENSE.