id = "jj" name = "Jujutsu" homepage = "https://github.com/jj-vcs/jj" description = "A Git-compatible version control system that is both simple and powerful." executables = ["jj"] [dotfiles] # https://github.com/jj-vcs/jj/blob/main/docs/config.md#user-config-files — # user config is ~/.jjconfig.toml, then $XDG_CONFIG_HOME/jj/config.toml and # $XDG_CONFIG_HOME/jj/conf.d/*.toml on Linux and macOS, with %APPDATA% as the # Windows platform-specific directory. [configHome] represents that latter # directory on Windows and the XDG directory on Unix-like systems. paths = [ "~/.jjconfig.toml", "[configHome]/jj/config.toml", "[configHome]/jj/conf.d/", ] secret = [] # User settings are loaded at command startup; jj does not keep this file open # for a long-running session. side_effect = false [commands] format = 1 label = "Jujutsu" description = "Common Jujutsu jobs: log, new change, describe, git clone and git push. Pick a subcommand." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false } [[commands.subcommand]] path = ["log"] label = "Show revision history" description = "Show the graph of revisions. Template and diff-tool options are left out." [[commands.subcommand.source]] id = "ref" kind = "manual" url = "https://docs.jj-vcs.dev/latest/cli-reference/" revision = "2026-10-27" evidence = """ **Usage:** `jj log [OPTIONS] [FILESETS]...` * `` — Show revisions modifying the given paths * `-r`, `--revision ` — Which revisions to show * `-n`, `--limit ` — Limit number of revisions to show * `--reversed` — Show revisions in the opposite order (older revisions first) * `-G`, `--no-graph` — Show a flat list of revisions instead of a graph * `-p`, `--patch` — Show patch * `-s`, `--summary` — For each path, show only whether it was modified, added, or deleted * `--stat` — Show a histogram of the changes """ [[commands.subcommand.field]] id = "filesets" label = "Paths" type = "path" path = { kind = "any", role = "input" } position = 0 multiple = true sources = ["ref"] [[commands.subcommand.field]] id = "revision" label = "Revisions (revset)" type = "string" option = ["--revision", "-r"] sources = ["ref"] [[commands.subcommand.field]] id = "limit" label = "Limit" type = "integer" option = ["--limit", "-n"] sources = ["ref"] [[commands.subcommand.field]] id = "reversed" label = "Oldest first" type = "boolean" option = ["--reversed"] sources = ["ref"] [[commands.subcommand.field]] id = "no_graph" label = "Flat list (no graph)" type = "boolean" option = ["--no-graph", "-G"] sources = ["ref"] [[commands.subcommand.field]] id = "patch" label = "Show patch" type = "boolean" option = ["--patch", "-p"] sources = ["ref"] [[commands.subcommand.field]] id = "summary" label = "Summary of changed paths" type = "boolean" option = ["--summary", "-s"] sources = ["ref"] [[commands.subcommand.field]] id = "stat" label = "Change histogram" type = "boolean" option = ["--stat"] sources = ["ref"] [[commands.subcommand.task]] id = "recent" label = "Recent history" fields = ["limit", "no_graph"] required = ["limit"] [[commands.subcommand.task]] id = "everything" label = "All revisions" fields = ["revision"] required = ["revision"] set = { revision = ["::"] } [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["revision", "limit", "no_graph", "filesets"] [[commands.subcommand.group]] id = "advanced" label = "Advanced" fields = ["reversed", "patch", "summary", "stat"] [[commands.subcommand]] path = ["new"] label = "Create a new change" description = "Create a new, empty change and edit it by default." [[commands.subcommand.source]] id = "ref" kind = "manual" url = "https://docs.jj-vcs.dev/latest/cli-reference/" revision = "2026-10-27" evidence = """ **Usage:** `jj new [OPTIONS] [REVSETS]...` * `` — Parent(s) of the new change [default: @] [aliases: -o, -r] * `-m`, `--message ` — The change description to use * `--no-edit` — Do not edit the newly created change * `-A`, `--insert-after ` [alias: `after`] — Insert the new change after the given commit(s) * `-B`, `--insert-before ` [alias: `before`] — Insert the new change before the given commit(s) """ [[commands.subcommand.field]] id = "parents" label = "Parent revisions" type = "string" position = 0 multiple = true sources = ["ref"] [[commands.subcommand.field]] id = "message" label = "Description" type = "string" option = ["--message", "-m"] sources = ["ref"] [[commands.subcommand.field]] id = "no_edit" label = "Do not edit the new change" type = "boolean" option = ["--no-edit"] sources = ["ref"] [[commands.subcommand.field]] id = "insert_after" label = "Insert after" type = "string" option = ["--insert-after", "-A"] sources = ["ref"] [[commands.subcommand.field]] id = "insert_before" label = "Insert before" type = "string" option = ["--insert-before", "-B"] sources = ["ref"] [[commands.subcommand.task]] id = "fresh" label = "New change on top" fields = ["message"] required = [] [[commands.subcommand.task]] id = "merge" label = "Merge revisions" fields = ["parents", "message"] required = ["parents"] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["parents", "message", "no_edit"] [[commands.subcommand.group]] id = "advanced" label = "Advanced" fields = ["insert_after", "insert_before"] [[commands.subcommand]] path = ["describe"] label = "Edit a description" description = "Set the description of a change; opens an editor unless a message is given." [[commands.subcommand.source]] id = "ref" kind = "manual" url = "https://docs.jj-vcs.dev/latest/cli-reference/" revision = "2026-10-27" evidence = """ **Usage:** `jj describe [OPTIONS] [REVSETS]...` * `` — The revision(s) whose description to edit (default: @) [aliases: -r] * `-m`, `--message ` — The change description to use (don't open editor) * `--stdin` — Read the change description from stdin * `--editor` — Open an editor to edit the change description """ [[commands.subcommand.field]] id = "revsets" label = "Revisions" type = "string" position = 0 multiple = true sources = ["ref"] [[commands.subcommand.field]] id = "message" label = "Description" type = "string" option = ["--message", "-m"] sources = ["ref"] [[commands.subcommand.field]] id = "editor" label = "Open editor anyway" type = "boolean" option = ["--editor"] sources = ["ref"] [[commands.subcommand.task]] id = "set" label = "Set description" fields = ["revsets", "message"] required = ["message"] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["message", "revsets"] [[commands.subcommand.group]] id = "advanced" label = "Advanced" fields = ["editor"] [[commands.subcommand]] path = ["git", "clone"] label = "Clone a Git repo" description = "Create a new Jujutsu repo backed by a clone of a Git repository." [[commands.subcommand.source]] id = "ref" kind = "manual" url = "https://docs.jj-vcs.dev/latest/cli-reference/" revision = "2026-10-27" evidence = """ **Usage:** `jj git clone [OPTIONS] [DESTINATION]` * `` — URL or path of the Git repo to clone * `` — Specifies the target directory for the Jujutsu repository clone. * `--remote ` — Name of the newly created remote * `--colocate` — Colocate the Jujutsu repo with the git repo * `--no-colocate` — Disable colocation of the Jujutsu repo with the git repo * `--depth ` — Create a shallow clone of the given depth * `-b`, `--branch ` — Name of the branch to fetch and use as the parent of the working-copy change (can be repeated) """ [[commands.subcommand.field]] id = "source" label = "Source URL or path" type = "string" position = 0 sources = ["ref"] [[commands.subcommand.field]] id = "destination" label = "Destination directory" type = "path" path = { kind = "directory", role = "output" } position = 1 sources = ["ref"] [[commands.subcommand.field]] id = "remote" label = "Remote name" type = "string" option = ["--remote"] sources = ["ref"] [[commands.subcommand.field]] id = "colocate" label = "Colocate with Git" type = "boolean" option = ["--colocate"] sources = ["ref"] [[commands.subcommand.field]] id = "no_colocate" label = "Do not colocate" type = "boolean" option = ["--no-colocate"] sources = ["ref"] [[commands.subcommand.field]] id = "depth" label = "Shallow clone depth" type = "integer" option = ["--depth"] sources = ["ref"] [[commands.subcommand.field]] id = "branch" label = "Branch" type = "string" option = ["--branch", "-b"] multiple = true sources = ["ref"] [[commands.subcommand.task]] id = "clone" label = "Clone" fields = ["source", "destination"] required = ["source"] [[commands.subcommand.task]] id = "shallow" label = "Shallow clone" fields = ["source", "destination", "depth"] required = ["source", "depth"] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["source", "destination", "colocate", "no_colocate"] [[commands.subcommand.group]] id = "advanced" label = "Advanced" fields = ["remote", "depth", "branch"] [[commands.subcommand]] path = ["git", "push"] label = "Push to a Git remote" description = "Push bookmarks to a remote. Safety checks are done by jj; --change and private/empty-description overrides are left out." [[commands.subcommand.source]] id = "ref" kind = "manual" url = "https://docs.jj-vcs.dev/latest/cli-reference/" revision = "2026-10-27" evidence = """ **Usage:** `jj git push [OPTIONS]` * `--remote ` — The remote(s) to push to (can be repeated) * `-b`, `--bookmark ` — Push only this bookmark, or bookmarks matching a pattern (can be repeated) * `-t`, `--tag ` — Push only this tag, or tags matching a pattern (can be repeated) * `--all` — Push all bookmarks and tags (including new ones) * `--tracked` — Push all tracked bookmarks and tags * `--deleted` — Push all deleted bookmarks and tags """ [[commands.subcommand.field]] id = "remote" label = "Remote" type = "string" option = ["--remote"] sources = ["ref"] [[commands.subcommand.field]] id = "bookmark" label = "Bookmark" type = "string" option = ["--bookmark", "-b"] multiple = true sources = ["ref"] [[commands.subcommand.field]] id = "tag" label = "Tag" type = "string" option = ["--tag", "-t"] multiple = true sources = ["ref"] [[commands.subcommand.field]] id = "all" label = "Push everything" type = "boolean" option = ["--all"] sources = ["ref"] [[commands.subcommand.field]] id = "tracked" label = "Tracked only" type = "boolean" option = ["--tracked"] sources = ["ref"] [[commands.subcommand.field]] id = "deleted" label = "Push deletions" type = "boolean" option = ["--deleted"] effect = "delete" sources = ["ref"] [[commands.subcommand.task]] id = "push_bookmark" label = "Push a bookmark" fields = ["bookmark", "remote"] required = ["bookmark"] [[commands.subcommand.task]] id = "push_tracked" label = "Push tracked" fields = ["tracked", "remote"] required = ["tracked"] set = { tracked = [true] } [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["bookmark", "remote", "tracked"] [[commands.subcommand.group]] id = "advanced" label = "Advanced" fields = ["tag", "all", "deleted"]