jgl 1.3.0

Multi-repo manager for jujutsu (jj)
Documentation

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:

cargo install jgl

Or build from source:

cargo build --release
# binary at target/release/jgl

Usage

jgl add <path>    # register a jj repository
jgl fetch         # run `jj git fetch` in all registered repos

Config is stored at ~/.config/jgl/config.toml (Linux/XDG) or the platform equivalent:

[[repos]]
path = "~/projects/foo"

[[repos]]
path = "~/projects/bar"

[fetch]
rebase = true          # rebase onto trunk() after each fetch (default: false)
with_conflicts = false # allow rebase even if it introduces conflicts (default: false)
idle_timeout = 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
source <(jgl completions bash)

# zsh
source <(jgl completions zsh)

# fish
jgl completions fish | source

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.