Skip to main content

CONFIG_SCHEMA

Constant CONFIG_SCHEMA 

Source
pub const CONFIG_SCHEMA: &str = "{\n    \"$schema\": \"http://json-schema.org/draft-04/schema\",\n    \"$comment\": \"`taplo` and the corresponding VS Code plugins only support version draft-04 of JSON Schema, see <https://taplo.tamasfe.dev/configuration/developing-schemas.html>. draft-07 is mostly compatible with it, newer versions may not be.\",\n    \"title\": \"Jujutsu config\",\n    \"type\": \"object\",\n    \"description\": \"User configuration for Jujutsu VCS. See https://docs.jj-vcs.dev/latest/config/ for details\",\n    \"properties\": {\n        \"user\": {\n            \"type\": \"object\",\n            \"description\": \"Settings about the user\",\n            \"properties\": {\n                \"name\": {\n                    \"type\": \"string\",\n                    \"description\": \"Full name of the user, used in commits\"\n                },\n                \"email\": {\n                    \"type\": \"string\",\n                    \"description\": \"User\'s email address, used in commits\",\n                    \"format\": \"email\"\n                }\n            }\n        },\n        \"operation\": {\n            \"type\": \"object\",\n            \"description\": \"Metadata to be attached to jj operations (shown in jj op log)\",\n            \"properties\": {\n                \"hostname\": {\n                    \"type\": \"string\",\n                    \"format\": \"hostname\"\n                },\n                \"username\": {\n                    \"type\": \"string\"\n                }\n            }\n        },\n        \"ui\": {\n            \"type\": \"object\",\n            \"description\": \"UI settings\",\n            \"definitions\": {\n                \"conflict-marker-style\": {\n                    \"type\": \"string\",\n                    \"description\": \"Conflict marker style to use when materializing conflicts in the working copy\",\n                    \"enum\": [\n                        \"diff\",\n                        \"diff-experimental\",\n                        \"snapshot\",\n                        \"git\"\n                    ],\n                    \"default\": \"diff\"\n                },\n                \"command\": {\n                    \"type\": [\n                        \"string\",\n                        \"array\"\n                    ],\n                    \"minItems\": 1,\n                    \"items\": {\n                        \"type\": \"string\"\n                    }\n                },\n                \"command-env\": {\n                    \"type\": \"object\",\n                    \"properties\": {\n                        \"command\": {\n                            \"type\": \"array\",\n                            \"minItems\": 1,\n                            \"items\": {\n                                \"type\": \"string\"\n                            }\n                        },\n                        \"env\": {\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"required\": [\n                        \"command\",\n                        \"env\"\n                    ]\n                }\n            },\n            \"properties\": {\n                \"default-command\": {\n                    \"description\": \"Default command to run when no explicit command is given\",\n                    \"default\": \"log\",\n                    \"oneOf\": [\n                        {\n                            \"type\": \"string\"\n                        },\n                        {\n                            \"type\": \"array\",\n                            \"items\": {\n                                \"type\": \"string\"\n                            }\n                        }\n                    ]\n                },\n                \"color\": {\n                    \"description\": \"Whether to colorize command output\",\n                    \"enum\": [\n                        \"always\",\n                        \"never\",\n                        \"debug\",\n                        \"auto\"\n                    ],\n                    \"default\": \"auto\"\n                },\n                \"paginate\": {\n                    \"type\": \"string\",\n                    \"description\": \"Whether or not to use a pager\",\n                    \"enum\": [\n                        \"never\",\n                        \"auto\"\n                    ],\n                    \"default\": \"auto\"\n                },\n                \"pager\": {\n                    \"description\": \"Pager to use for displaying command output\",\n                    \"default\": \"less -FRX\",\n                    \"oneOf\": [\n                        {\n                            \"$ref\": \"#/properties/ui/definitions/command\"\n                        },\n                        {\n                            \"$ref\": \"#/properties/ui/definitions/command-env\"\n                        }\n                    ]\n                },\n                \"streampager\": {\n                    \"type\": \"object\",\n                    \"description\": \"\':builtin\' (streampager-based) pager configuration\",\n                    \"properties\": {\n                        \"interface\": {\n                            \"description\": \"Whether to quit automatically, whether to clear screen on startup/exit\",\n                            \"enum\": [\n                                \"quit-if-one-page\",\n                                \"full-screen-clear-output\",\n                                \"quit-quickly-or-clear-output\"\n                            ],\n                            \"default\": \"quit-if-one-page\"\n                        },\n                        \"wrapping\": {\n                            \"description\": \"Whether to wrap long lines\",\n                            \"enum\": [\n                                \"anywhere\",\n                                \"word\",\n                                \"none\"\n                            ],\n                            \"default\": \"anywhere\"\n                        },\n                        \"show-ruler\": {\n                            \"type\": \"boolean\",\n                            \"description\": \"Whether the ruler should start visible\",\n                            \"default\": true\n                        }\n                    }\n                },\n                \"diff-instructions\": {\n                    \"type\": \"boolean\",\n                    \"description\": \"Whether to generate the JJ-INSTRUCTIONS file as part of editing a diff\",\n                    \"default\": true\n                },\n                \"graph\": {\n                    \"type\": \"object\",\n                    \"description\": \"Options for rendering revision graphs from jj log etc\",\n                    \"properties\": {\n                        \"style\": {\n                            \"description\": \"Style of connectors/markings used to render the graph. See https://docs.jj-vcs.dev/latest/config/#graph-style\",\n                            \"enum\": [\n                                \"curved\",\n                                \"square\",\n                                \"ascii\",\n                                \"ascii-large\"\n                            ],\n                            \"default\": \"curved\"\n                        }\n                    }\n                },\n                \"log-word-wrap\": {\n                    \"type\": \"boolean\",\n                    \"description\": \"Whether to wrap log template output\",\n                    \"default\": false\n                },\n                \"log-synthetic-elided-nodes\": {\n                    \"type\": \"boolean\",\n                    \"description\": \"Whether to render elided parts of the graph as synthetic nodes.\",\n                    \"default\": true\n                },\n                \"editor\": {\n                    \"description\": \"Editor to use for commands that involve editing text\",\n                    \"oneOf\": [\n                        {\n                            \"$ref\": \"#/properties/ui/definitions/command\"\n                        },\n                        {\n                            \"$ref\": \"#/properties/ui/definitions/command-env\"\n                        }\n                    ]\n                },\n                \"diff-editor\": {\n                    \"description\": \"Editor tool to use for editing diffs\",\n                    \"default\": \":builtin\",\n                    \"oneOf\": [\n                        {\n                            \"$ref\": \"#/properties/ui/definitions/command\"\n                        },\n                        {\n                            \"$ref\": \"#/properties/ui/definitions/command-env\"\n                        }\n                    ]\n                },\n                \"diff-formatter\": {\n                    \"description\": \"Tool for displaying or generating diffs\",\n                    \"default\": \":color-words\",\n                    \"oneOf\": [\n                        {\n                            \"$ref\": \"#/properties/ui/definitions/command\"\n                        },\n                        {\n                            \"$ref\": \"#/properties/ui/definitions/command-env\"\n                        }\n                    ]\n                },\n                \"merge-editor\": {\n                    \"description\": \"Tool to use for resolving three-way merges. Behavior for a given tool name can be configured in merge-tools.TOOL tables\",\n                    \"default\": \":builtin\",\n                    \"oneOf\": [\n                        {\n                            \"$ref\": \"#/properties/ui/definitions/command\"\n                        },\n                        {\n                            \"$ref\": \"#/properties/ui/definitions/command-env\"\n                        }\n                    ]\n                },\n                \"conflict-marker-style\": {\n                    \"$ref\": \"#/properties/ui/definitions/conflict-marker-style\"\n                },\n                \"show-cryptographic-signatures\": {\n                    \"type\": \"boolean\",\n                    \"default\": false,\n                    \"description\": \"Whether the built-in templates should show cryptographic signature information\"\n                },\n                \"movement\": {\n                    \"type\": \"object\",\n                    \"properties\": {\n                        \"edit\": {\n                            \"type\": \"boolean\",\n                            \"description\": \"Whether the next and prev commands should behave as if the --edit flag was passed\",\n                            \"default\": false\n                        }\n                    }\n                },\n                \"bookmark-list-sort-keys\": {\n                    \"type\": \"array\",\n                    \"description\": \"Specifies the sort keys for the bookmarks list. See the `jj bookmark list --help` for the `--sort` option\",\n                    \"items\": {\n                        \"type\": \"string\",\n                        \"enum\": [\n                            \"name\",\n                            \"name-\",\n                            \"author-name\",\n                            \"author-name-\",\n                            \"author-email\",\n                            \"author-email-\",\n                            \"author-date\",\n                            \"author-date-\",\n                            \"committer-name\",\n                            \"committer-name-\",\n                            \"committer-email\",\n                            \"committer-email-\",\n                            \"committer-date\",\n                            \"committer-date-\"\n                        ]\n                    }\n                },\n                \"tag-list-sort-keys\": {\n                    \"type\": \"array\",\n                    \"description\": \"Specifies the sort keys for the tags list. See the `jj tag list --help` for the `--sort` option\",\n                    \"items\": {\n                        \"type\": \"string\",\n                        \"enum\": [\n                            \"name\",\n                            \"name-\",\n                            \"author-name\",\n                            \"author-name-\",\n                            \"author-email\",\n                            \"author-email-\",\n                            \"author-date\",\n                            \"author-date-\",\n                            \"committer-name\",\n                            \"committer-name-\",\n                            \"committer-email\",\n                            \"committer-email-\",\n                            \"committer-date\",\n                            \"committer-date-\"\n                        ]\n                    }\n                }\n            }\n        },\n        \"fsmonitor\": {\n            \"type\": \"object\",\n            \"description\": \"External filesystem monitor settings, useful for large repos\",\n            \"properties\": {\n                \"backend\": {\n                    \"type\": \"string\",\n                    \"enum\": [\n                        \"none\",\n                        \"watchman\"\n                    ],\n                    \"default\": \"none\",\n                    \"description\": \"Whether to use an external filesystem monitor, useful for large repos\"\n                },\n                \"watchman\": {\n                    \"type\": \"object\",\n                    \"properties\": {\n                        \"register-snapshot-trigger\": {\n                            \"type\": \"boolean\",\n                            \"default\": false,\n                            \"description\": \"Whether to use triggers to monitor for changes in the background.\"\n                        }\n                    }\n                }\n            }\n        },\n        \"colors\": {\n            \"type\": \"object\",\n            \"description\": \"Mapping from jj formatter labels to colors\",\n            \"definitions\": {\n                \"colorNames\": {\n                    \"enum\": [\n                        \"default\",\n                        \"black\",\n                        \"red\",\n                        \"green\",\n                        \"yellow\",\n                        \"blue\",\n                        \"magenta\",\n                        \"cyan\",\n                        \"white\",\n                        \"bright black\",\n                        \"bright red\",\n                        \"bright green\",\n                        \"bright yellow\",\n                        \"bright blue\",\n                        \"bright magenta\",\n                        \"bright cyan\",\n                        \"bright white\"\n                    ]\n                },\n                \"ansi256Color\": {\n                    \"type\": \"string\",\n                    \"pattern\": \"^ansi-color-([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$\"\n                },\n                \"hexColor\": {\n                    \"type\": \"string\",\n                    \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n                },\n                \"colors\": {\n                    \"oneOf\": [\n                        {\n                            \"$ref\": \"#/properties/colors/definitions/colorNames\"\n                        },\n                        {\n                            \"$ref\": \"#/properties/colors/definitions/ansi256Color\"\n                        },\n                        {\n                            \"$ref\": \"#/properties/colors/definitions/hexColor\"\n                        }\n                    ]\n                }\n            },\n            \"additionalProperties\": {\n                \"description\": \"A color profile for the given formatter label. Either a bare color name used as the foreground color or a table describing color and formatting\",\n                \"oneOf\": [\n                    {\n                        \"$ref\": \"#/properties/colors/definitions/colors\"\n                    },\n                    {\n                        \"type\": \"object\",\n                        \"properties\": {\n                            \"fg\": {\n                                \"$ref\": \"#/properties/colors/definitions/colors\"\n                            },\n                            \"bg\": {\n                                \"$ref\": \"#/properties/colors/definitions/colors\"\n                            },\n                            \"bold\": {\n                                \"type\": \"boolean\"\n                            },\n                            \"dim\": {\n                                \"type\": \"boolean\"\n                            },\n                            \"italic\": {\n                                \"type\": \"boolean\"\n                            },\n                            \"underline\": {\n                                \"type\": \"boolean\"\n                            },\n                            \"crossed-out\": {\n                                \"type\": \"boolean\"\n                            },\n                            \"reverse\": {\n                                \"type\": \"boolean\"\n                            }\n                        }\n                    }\n                ]\n            }\n        },\n        \"diff\": {\n            \"type\": \"object\",\n            \"description\": \"Builtin diff formats settings\",\n            \"properties\": {\n                \"color-words\": {\n                    \"type\": \"object\",\n                    \"description\": \"Options for color-words diffs\",\n                    \"properties\": {\n                        \"conflict\": {\n                            \"type\": \"string\",\n                            \"description\": \"How conflicts are processed and displayed\",\n                            \"enum\": [\n                                \"materialize\",\n                                \"pair\"\n                            ],\n                            \"default\": \"materialize\"\n                        },\n                        \"max-inline-alternation\": {\n                            \"type\": \"integer\",\n                            \"description\": \"Maximum number of removed/added word alternation to inline\",\n                            \"default\": 3\n                        },\n                        \"context\": {\n                            \"type\": \"integer\",\n                            \"description\": \"Number of lines of context to show\",\n                            \"default\": 3\n                        }\n                    }\n                },\n                \"git\": {\n                    \"type\": \"object\",\n                    \"description\": \"Options for git diffs\",\n                    \"properties\": {\n                        \"context\": {\n                            \"type\": \"integer\",\n                            \"description\": \"Number of lines of context to show\",\n                            \"default\": 3\n                        },\n                        \"show-path-prefix\": {\n                            \"type\": \"boolean\",\n                            \"description\": \"Whether to show the \'a/\' and \'b/\' path prefixes\",\n                            \"default\": true\n                        }\n                    }\n                }\n            }\n        },\n        \"fileset-aliases\": {\n            \"type\": \"object\",\n            \"description\": \"Custom symbols/function aliases that can be used in fileset expressions\",\n            \"additionalProperties\": {\n                \"oneOf\": [\n                    {\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"type\": \"object\",\n                        \"properties\": {\n                            \"definition\": {\n                                \"type\": \"string\"\n                            },\n                            \"doc\": {\n                                \"type\": \"string\"\n                            }\n                        },\n                        \"required\": [\n                            \"definition\"\n                        ]\n                    }\n                ]\n            }\n        },\n        \"git\": {\n            \"type\": \"object\",\n            \"description\": \"Settings for git behavior (when using git backend)\",\n            \"properties\": {\n                \"abandon-unreachable-commits\": {\n                    \"type\": \"boolean\",\n                    \"description\": \"Whether jj should abandon commits that became unreachable in Git.\",\n                    \"default\": true\n                },\n                \"fetch\": {\n                    \"description\": \"The remote(s) from which commits are fetched\",\n                    \"default\": \"origin\",\n                    \"oneOf\": [\n                        {\n                            \"type\": \"string\"\n                        },\n                        {\n                            \"type\": \"array\",\n                            \"items\": {\n                                \"type\": \"string\"\n                            }\n                        }\n                    ]\n                },\n                \"private-commits\": {\n                    \"type\": \"string\",\n                    \"description\": \"Revset of commits to refuse to push to remotes\",\n                    \"default\": \"none()\"\n                },\n                \"push\": {\n                    \"type\": \"string\",\n                    \"description\": \"The remote to which commits are pushed\",\n                    \"default\": \"origin\"\n                },\n                \"record-synthetic-predecessors\": {\n                    \"type\": \"boolean\",\n                    \"description\": \"Whether to generate synthetic predecessors for fetched/imported commits\",\n                    \"default\": true\n                },\n                \"sign-on-push\": {\n                    \"type\": \"boolean\",\n                    \"description\": \"Whether jj should sign commits before pushing\",\n                    \"default\": false\n                },\n                \"track-default-bookmark-on-clone\": {\n                    \"type\": \"boolean\",\n                    \"description\": \"Whether `jj git clone` creates a local bookmark tracking the default remote bookmark\",\n                    \"default\": true\n                },\n                \"write-change-id-header\": {\n                    \"type\": \"boolean\",\n                    \"description\": \"Whether the change id should be stored in the Git commit object\",\n                    \"default\": true\n                },\n                \"executable-path\": {\n                    \"type\": \"string\",\n                    \"description\": \"Path to the git executable\",\n                    \"default\": \"git\"\n                },\n                \"colocate\": {\n                    \"type\": \"boolean\",\n                    \"description\": \"Whether to colocate the working copy with the git repository\",\n                    \"default\": true\n                }\n            }\n        },\n        \"remotes\": {\n            \"type\": \"object\",\n            \"description\": \"Settings related to specific remotes\",\n            \"additionalProperties\": {\n                \"type\": \"object\",\n                \"properties\": {\n                    \"auto-track-bookmarks\": {\n                        \"type\": \"string\",\n                        \"description\": \"A string pattern describing the bookmarks to automatically track with this remote. It will be applied to any new bookmark, created or fetched. See https://docs.jj-vcs.dev/latest/config/#automatic-tracking-of-bookmarks\",\n                        \"default\": \"~*\"\n                    },\n                    \"auto-track-created-bookmarks\": {\n                        \"type\": \"string\",\n                        \"description\": \"A string pattern describing the locally-created bookmarks which should track this remote automatically. It will be applied to new bookmarks created with `jj bookmark create` or `jj bookmark set`. See https://docs.jj-vcs.dev/latest/config/#automatic-tracking-of-bookmarks\",\n                        \"default\": \"~*\"\n                    },\n                    \"fetch-bookmarks\": {\n                        \"type\": \"string\",\n                        \"description\": \"A string pattern describing the bookmarks to fetch by default\"\n                    },\n                    \"fetch-tags\": {\n                        \"type\": \"string\",\n                        \"description\": \"A string pattern describing the tags to fetch by default\"\n                    }\n                }\n            }\n        },\n        \"gerrit\": {\n            \"type\": \"object\",\n            \"description\": \"Settings for interacting with Gerrit\",\n            \"properties\": {\n                \"default-remote\": {\n                    \"type\": \"string\",\n                    \"description\": \"The Gerrit remote to interact with\"\n                },\n                \"default-remote-branch\": {\n                    \"type\": \"string\",\n                    \"description\": \"The default branch to propose changes for\"\n                },\n                \"review-url\": {\n                    \"type\": \"string\",\n                    \"description\": \"Generate Link trailers with this URL instead of Change-Id trailers in `jj gerrit upload`\"\n                }\n            }\n        },\n        \"merge\": {\n            \"type\": \"object\",\n            \"description\": \"Merge settings\",\n            \"properties\": {\n                \"hunk-level\": {\n                    \"type\": \"string\",\n                    \"description\": \"Granularity of hunks when merging files\",\n                    \"enum\": [\n                        \"line\",\n                        \"word\"\n                    ],\n                    \"default\": \"line\"\n                },\n                \"same-change\": {\n                    \"type\": \"string\",\n                    \"description\": \"Whether to resolve conflict that makes the same change at all sides\",\n                    \"enum\": [\n                        \"keep\",\n                        \"accept\"\n                    ],\n                    \"default\": \"accept\"\n                }\n            }\n        },\n        \"merge-tools\": {\n            \"type\": \"object\",\n            \"description\": \"Tables of custom options to pass to the given merge tool (selected in ui.merge-editor)\",\n            \"additionalProperties\": {\n                \"type\": \"object\",\n                \"properties\": {\n                    \"program\": {\n                        \"type\": \"string\"\n                    },\n                    \"diff-args\": {\n                        \"type\": \"array\",\n                        \"items\": {\n                            \"type\": \"string\"\n                        }\n                    },\n                    \"diff-expected-exit-codes\": {\n                        \"type\": \"array\",\n                        \"items\": {\n                            \"type\": \"integer\"\n                        },\n                        \"description\": \"Array of exit codes that do not indicate tool failure, i.e. [0, 1] for unix diff.\",\n                        \"default\": [\n                            0\n                        ]\n                    },\n                    \"diff-do-chdir\": {\n                        \"type\": \"boolean\",\n                        \"description\": \"Invoke the tool in the temporary diff directory. This setting will be removed soon\",\n                        \"default\": true\n                    },\n                    \"diff-invocation-mode\": {\n                        \"description\": \"Invoke the tool with directories or individual files when generating diffs.\",\n                        \"enum\": [\n                            \"dir\",\n                            \"file-by-file\"\n                        ],\n                        \"default\": \"dir\"\n                    },\n                    \"edit-args\": {\n                        \"type\": \"array\",\n                        \"items\": {\n                            \"type\": \"string\"\n                        }\n                    },\n                    \"edit-invocation-mode\": {\n                        \"description\": \"Invoke the tool with directories or individual files when editing diffs (e.g. jj diffedit, jj split).\",\n                        \"enum\": [\n                            \"dir\",\n                            \"file-by-file\"\n                        ],\n                        \"default\": \"dir\"\n                    },\n                    \"merge-args\": {\n                        \"type\": \"array\",\n                        \"items\": {\n                            \"type\": \"string\"\n                        }\n                    },\n                    \"merge-conflict-exit-codes\": {\n                        \"type\": \"array\",\n                        \"items\": {\n                            \"type\": \"number\"\n                        },\n                        \"description\": \"Array of exit codes to indicate that the conflict was only partially resolved. See https://docs.jj-vcs.dev/latest/config/#editing-conflict-markers-with-a-tool-or-a-text-editor\",\n                        \"default\": []\n                    },\n                    \"merge-tool-edits-conflict-markers\": {\n                        \"type\": \"boolean\",\n                        \"description\": \"Whether to populate the output file with conflict markers before starting the merge tool. See https://docs.jj-vcs.dev/latest/config/#editing-conflict-markers-with-a-tool-or-a-text-editor\",\n                        \"default\": false\n                    },\n                    \"conflict-marker-style\": {\n                        \"$ref\": \"#/properties/ui/definitions/conflict-marker-style\"\n                    }\n                }\n            }\n        },\n        \"revsets\": {\n            \"type\": \"object\",\n            \"description\": \"Revset expressions used by various commands\",\n            \"properties\": {\n                \"arrange\": {\n                    \"type\": \"string\",\n                    \"description\": \"Default set of revisions to open in the TUI when no explicit revset is given for jj arrange\",\n                    \"default\": \"reachable(@, mutable())\"\n                },\n                \"fix\": {\n                    \"type\": \"string\",\n                    \"description\": \"Default set of revisions to fix when no explicit revset is given for jj fix\",\n                    \"default\": \"reachable(@, mutable())\"\n                },\n                \"log\": {\n                    \"type\": \"string\",\n                    \"description\": \"Default set of revisions to show when no explicit revset is given for jj log and similar commands\",\n                    \"default\": \"present(@) | ancestors(immutable_heads().., 2) | trunk()\"\n                },\n                \"short-prefixes\": {\n                    \"type\": \"string\",\n                    \"description\": \"Revisions to give shorter change and commit IDs to\",\n                    \"default\": \"<revsets.log>\"\n                },\n                \"run\": {\n                    \"type\": \"string\",\n                    \"description\": \"Default set of revisions to run a command on when no explicit revset is given for jj run\",\n                    \"default\": \"reachable(@, mutable())\"\n                },\n                \"simplify-parents\": {\n                    \"type\": \"string\",\n                    \"description\": \"Default set of revisions to simplify when no explicit revset is given for jj simplify-parents\",\n                    \"default\": \"reachable(@, mutable())\"\n                },\n                \"sign\": {\n                    \"type\": \"string\",\n                    \"description\": \"Default set of revisions to sign when no explicit revset is given for jj sign\",\n                    \"default\": \"reachable(@, mutable())\"\n                },\n                \"log-graph-prioritize\": {\n                    \"type\": \"string\",\n                    \"description\": \"Set of revisions to prioritize when rendering the graph for jj log\",\n                    \"default\": \"present(@)\"\n                },\n                \"bookmark-advance-to\": {\n                    \"type\": \"string\",\n                    \"description\": \"Default revision to advance bookmarks to when no explicit revision is given to jj advance `--to`\",\n                    \"default\": \"@\"\n                },\n                \"bookmark-advance-from\": {\n                    \"type\": \"string\",\n                    \"description\": \"Default set of revisions to advance bookmarks from for jj advance (has access to `to`, the advance destination)\",\n                    \"default\": \"heads(::to & bookmarks())\"\n                }\n            },\n            \"additionalProperties\": {\n                \"type\": \"string\"\n            }\n        },\n        \"revset-aliases\": {\n            \"type\": \"object\",\n            \"description\": \"Custom symbols/function aliases that can be used in revset expressions\",\n            \"properties\": {\n                \"immutable_heads()\": {\n                    \"type\": \"string\",\n                    \"description\": \"Revisions to consider immutable. Ancestors of these are also considered immutable. The root commit is always considered immutable.\",\n                    \"default\": \"trunk() | tags() | untracked_remote_bookmarks()\"\n                }\n            },\n            \"additionalProperties\": {\n                \"oneOf\": [\n                    {\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"type\": \"object\",\n                        \"properties\": {\n                            \"definition\": {\n                                \"type\": \"string\"\n                            },\n                            \"doc\": {\n                                \"type\": \"string\"\n                            }\n                        },\n                        \"required\": [\n                            \"definition\"\n                        ]\n                    }\n                ]\n            }\n        },\n        \"template-aliases\": {\n            \"type\": \"object\",\n            \"description\": \"Custom symbols/function aliases that can be used in templates\",\n            \"additionalProperties\": {\n                \"oneOf\": [\n                    {\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"type\": \"object\",\n                        \"properties\": {\n                            \"definition\": {\n                                \"type\": \"string\"\n                            },\n                            \"doc\": {\n                                \"type\": \"string\"\n                            }\n                        },\n                        \"required\": [\n                            \"definition\"\n                        ]\n                    }\n                ]\n            }\n        },\n        \"aliases\": {\n            \"type\": \"object\",\n            \"description\": \"Custom subcommand aliases to be supported by the jj command\",\n            \"additionalProperties\": {\n                \"oneOf\": [\n                    {\n                        \"type\": \"array\",\n                        \"items\": {\n                            \"type\": \"string\"\n                        }\n                    },\n                    {\n                        \"type\": \"object\",\n                        \"properties\": {\n                            \"definition\": {\n                                \"type\": \"array\",\n                                \"items\": {\n                                    \"type\": \"string\"\n                                }\n                            },\n                            \"doc\": {\n                                \"type\": \"string\"\n                            }\n                        },\n                        \"required\": [\n                            \"definition\"\n                        ]\n                    }\n                ]\n            }\n        },\n        \"run\": {\n            \"type\": \"object\",\n            \"description\": \"Settings for the `jj run` command, which runs a shell command across a set of revisions.\",\n            \"properties\": {\n                \"jobs\": {\n                    \"type\": \"integer\",\n                    \"minimum\": 1,\n                    \"description\": \"Maximum number of working copies (and parallel jobs) `jj run` uses. Defaults to 1. Overridden by `--jobs`.\"\n                }\n            }\n        },\n        \"snapshot\": {\n            \"type\": \"object\",\n            \"description\": \"Parameters governing automatic capture of files into the working copy commit\",\n            \"properties\": {\n                \"auto-track\": {\n                    \"type\": \"string\",\n                    \"description\": \"Fileset pattern describing what new files to automatically track on snapshotting. By default all new files are tracked.\",\n                    \"default\": \"all()\"\n                },\n                \"auto-update-stale\": {\n                    \"type\": \"boolean\",\n                    \"description\": \"Whether to automatically update the working copy if it is stale. See https://docs.jj-vcs.dev/latest/working-copy/#stale-working-copy\",\n                    \"default\": false\n                },\n                \"max-new-file-size\": {\n                    \"type\": [\n                        \"integer\",\n                        \"string\"\n                    ],\n                    \"description\": \"New files with a size in bytes above this threshold are not snapshotted, unless the threshold is 0\",\n                    \"default\": \"1MiB\"\n                }\n            }\n        },\n        \"experimental-advance-branches\": {\n            \"type\": \"object\",\n            \"description\": \"Settings controlling the \'advance-branches\' feature which moves bookmarks forward when new commits are created.\",\n            \"properties\": {\n                \"enabled-branches\": {\n                    \"type\": \"array\",\n                    \"description\": \"Patterns used to identify bookmarks which may be advanced.\",\n                    \"items\": {\n                        \"type\": \"string\"\n                    }\n                },\n                \"disabled-branches\": {\n                    \"type\": \"array\",\n                    \"description\": \"Patterns used to identify bookmarks which are not advanced. Takes precedence over \'enabled-branches\'.\",\n                    \"items\": {\n                        \"type\": \"string\"\n                    }\n                }\n            }\n        },\n        \"signing\": {\n            \"type\": \"object\",\n            \"description\": \"Settings for verifying and creating cryptographic commit signatures\",\n            \"properties\": {\n                \"backend\": {\n                    \"type\": \"string\",\n                    \"enum\": [\n                        \"gpg\",\n                        \"gpgsm\",\n                        \"none\",\n                        \"ssh\"\n                    ],\n                    \"description\": \"The backend to use for signing commits. The string `none` disables signing.\",\n                    \"default\": \"none\"\n                },\n                \"key\": {\n                    \"type\": \"string\",\n                    \"description\": \"The key the configured signing backend will use to to sign commits. Overridden by `jj sign` parameter or by the global `--sign-with` option\"\n                },\n                \"behavior\": {\n                    \"type\": \"string\",\n                    \"enum\": [\n                        \"drop\",\n                        \"keep\",\n                        \"own\",\n                        \"force\"\n                    ],\n                    \"description\": \"Which commits to sign by default. Values: drop (never sign), keep (preserve existing signatures), own (sign own commits), force (sign all commits)\"\n                },\n                \"backends\": {\n                    \"type\": \"object\",\n                    \"description\": \"Tables of options to pass to specific signing backends\",\n                    \"properties\": {\n                        \"gpg\": {\n                            \"type\": \"object\",\n                            \"properties\": {\n                                \"program\": {\n                                    \"type\": \"string\",\n                                    \"description\": \"Path to the gpg program to be called\",\n                                    \"default\": \"gpg\"\n                                },\n                                \"allow-expired-keys\": {\n                                    \"type\": \"boolean\",\n                                    \"description\": \"Whether to consider signatures generated with an expired key as valid\",\n                                    \"default\": false\n                                }\n                            }\n                        },\n                        \"gpgsm\": {\n                            \"type\": \"object\",\n                            \"properties\": {\n                                \"program\": {\n                                    \"type\": \"string\",\n                                    \"description\": \"Path to the gpgsm program to be called\",\n                                    \"default\": \"gpgsm\"\n                                },\n                                \"allow-expired-keys\": {\n                                    \"type\": \"boolean\",\n                                    \"description\": \"Whether to consider signatures generated with an expired key as valid\",\n                                    \"default\": false\n                                }\n                            }\n                        },\n                        \"ssh\": {\n                            \"type\": \"object\",\n                            \"properties\": {\n                                \"program\": {\n                                    \"type\": \"string\",\n                                    \"description\": \"Path to the ssh-keygen program to be called\",\n                                    \"default\": \"ssh-keygen\"\n                                },\n                                \"allowed-signers\": {\n                                    \"type\": \"string\",\n                                    \"description\": \"Path to an allowed signers file used for signature verification\"\n                                },\n                                \"revocation-list\": {\n                                    \"type\": \"string\",\n                                    \"description\": \"Path to a revocation list file used for revoking public keys\"\n                                }\n                            }\n                        }\n                    },\n                    \"additionalProperties\": true\n                }\n            }\n        },\n        \"fix\": {\n            \"type\": \"object\",\n            \"description\": \"Settings for jj fix\",\n            \"properties\": {\n                \"tools\": {\n                    \"type\": \"object\",\n                    \"additionalProperties\": {\n                        \"type\": \"object\",\n                        \"description\": \"Settings for how specific filesets are affected by a tool\",\n                        \"properties\": {\n                            \"command\": {\n                                \"description\": \"Arguments used to execute this tool\",\n                                \"oneOf\": [\n                                    {\n                                        \"$ref\": \"#/properties/ui/definitions/command\"\n                                    },\n                                    {\n                                        \"$ref\": \"#/properties/ui/definitions/command-env\"\n                                    }\n                                ]\n                            },\n                            \"patterns\": {\n                                \"type\": \"array\",\n                                \"items\": {\n                                    \"type\": \"string\"\n                                },\n                                \"description\": \"Filesets that will be affected by this tool\"\n                            },\n                            \"enabled\": {\n                                \"type\": \"boolean\",\n                                \"description\": \"Disables this tool if set to false\",\n                                \"default\": true\n                            },\n                            \"line-range-arg\": {\n                                \"type\": \"string\",\n                                \"description\": \"Argument template for changed line ranges (e.g. \'--lines=$first-$last\')\"\n                            },\n                            \"run-tool-if-zero-line-ranges\": {\n                                \"type\": \"boolean\",\n                                \"description\": \"Whether to run the tool if there are zero line ranges to format.\",\n                                \"default\": false\n                            }\n                        }\n                    },\n                    \"description\": \"Settings for tools run by jj fix\"\n                }\n            }\n        },\n        \"split\": {\n            \"type\": \"object\",\n            \"description\": \"Settings for jj split\",\n            \"properties\": {\n                \"legacy-bookmark-behavior\": {\n                    \"type\": \"boolean\",\n                    \"description\": \"If true, bookmarks will move to the second commit instead of the first.\",\n                    \"default\": true\n                }\n            }\n        },\n        \"hints\": {\n            \"type\": \"object\",\n            \"description\": \"Various hints in jj\'s UI that can be disabled\",\n            \"additionalProperties\": {\n                \"type\": \"boolean\"\n            }\n        },\n        \"templates\": {\n            \"type\": \"object\",\n            \"description\": \"Definitions for the templates that various jj commands use\",\n            \"properties\": {\n                \"arrange\": {\n                    \"type\": \"string\",\n                    \"description\": \"`jj arrange``\'s template for commits in the main view\"\n                },\n                \"bookmark_list\": {\n                    \"type\": \"string\",\n                    \"description\": \"`jj bookmark list`\'s output\"\n                },\n                \"commit_summary\": {\n                    \"type\": \"string\",\n                    \"description\": \"The short commit summary used by many commands\"\n                },\n                \"commit_trailers\": {\n                    \"type\": \"string\",\n                    \"description\": \"Trailers that will be appended to a commit\'s description\"\n                },\n                \"file_annotate\": {\n                    \"type\": \"string\",\n                    \"description\": \"`jj file annotate`\'s output\"\n                },\n                \"config_list\": {\n                    \"type\": \"string\",\n                    \"description\": \"`jj config list`\'s output\"\n                },\n                \"draft_commit_description\": {\n                    \"type\": \"string\",\n                    \"description\": \"The draft commit description opened in an editor\"\n                },\n                \"evolog\": {\n                    \"type\": \"string\",\n                    \"description\": \"`jj evolog`\'s output\"\n                },\n                \"file_list\": {\n                    \"type\": \"string\",\n                    \"description\": \"`jj file list`\'s output\"\n                },\n                \"file_show\": {\n                    \"type\": \"string\",\n                    \"description\": \"`jj file show`\'s output\"\n                },\n                \"git_push_bookmark\": {\n                    \"type\": \"string\",\n                    \"description\": \"Bookmark name to be assigned when pushing a change to Git remote\"\n                },\n                \"log\": {\n                    \"type\": \"string\",\n                    \"description\": \"`jj log`\'s output\"\n                },\n                \"op_log\": {\n                    \"type\": \"string\",\n                    \"description\": \"`jj op log`\'s output\"\n                },\n                \"op_show\": {\n                    \"type\": \"string\",\n                    \"description\": \"`jj op show`\'s output\"\n                },\n                \"op_summary\": {\n                    \"type\": \"string\",\n                    \"description\": \"The operation summary used by many commands\"\n                },\n                \"show\": {\n                    \"type\": \"string\",\n                    \"description\": \"`jj show`\'s output\"\n                },\n                \"revert_description\": {\n                    \"type\": \"string\",\n                    \"description\": \"The description of commits reverted by `jj revert`\"\n                },\n                \"tag_list\": {\n                    \"type\": \"string\",\n                    \"description\": \"`jj tag list`\'s output\"\n                },\n                \"workspace_list\": {\n                    \"type\": \"string\",\n                    \"description\": \"`jj workspace list`\'s output\"\n                }\n            },\n            \"additionalProperties\": {\n                \"type\": \"string\"\n            }\n        },\n        \"working-copy\": {\n            \"type\": \"object\",\n            \"description\": \"Working copy settings\",\n            \"properties\": {\n                \"eol-conversion\": {\n                    \"type\": \"string\",\n                    \"description\": \"Configuring auto-converting CRLF line endings into LF when you add a file to the backend, and vice versa when it checks out code onto your filesystem.\",\n                    \"enum\": [\n                        \"input\",\n                        \"input-output\",\n                        \"none\"\n                    ],\n                    \"default\": \"none\"\n                },\n                \"exec-bit-change\": {\n                    \"type\": \"string\",\n                    \"description\": \"Whether to respect changes to executable bits on Unix. This is unused on Windows.\",\n                    \"enum\": [\n                        \"respect\",\n                        \"ignore\",\n                        \"auto\"\n                    ],\n                    \"default\": \"auto\"\n                }\n            }\n        },\n        \"--when\": {\n            \"type\": \"object\",\n            \"description\": \"Conditions restricting the application of the configuration\",\n            \"properties\": {\n                \"repositories\": {\n                    \"type\": \"array\",\n                    \"description\": \"List of paths to match the repository path prefix\",\n                    \"items\": {\n                        \"type\": \"string\"\n                    }\n                },\n                \"hostnames\": {\n                    \"type\": \"array\",\n                    \"description\": \"List of hostnames to match the hostname\",\n                    \"items\": {\n                        \"type\": \"string\"\n                    }\n                },\n                \"workspaces\": {\n                    \"type\": \"array\",\n                    \"description\": \"List of paths to match the workspace path prefix\",\n                    \"items\": {\n                        \"type\": \"string\"\n                    }\n                },\n                \"commands\": {\n                    \"type\": \"array\",\n                    \"description\": \"List of subcommands to match\",\n                    \"items\": {\n                        \"type\": \"string\"\n                    }\n                },\n                \"platforms\": {\n                    \"type\": \"array\",\n                    \"description\": \"List of platforms to match\",\n                    \"items\": {\n                        \"type\": \"string\",\n                        \"enum\": [\n                            \"aix\",\n                            \"android\",\n                            \"apple\",\n                            \"dragonfly\",\n                            \"emscripten\",\n                            \"espidf\",\n                            \"fortanix\",\n                            \"freebsd\",\n                            \"fuchsia\",\n                            \"haiku\",\n                            \"hermit\",\n                            \"horizon\",\n                            \"hurd\",\n                            \"illumos\",\n                            \"ios\",\n                            \"itron\",\n                            \"l4re\",\n                            \"linux\",\n                            \"macos\",\n                            \"netbsd\",\n                            \"nto\",\n                            \"openbsd\",\n                            \"redox\",\n                            \"solaris\",\n                            \"solid_asp3\",\n                            \"tvos\",\n                            \"uefi\",\n                            \"unix\",\n                            \"visionos\",\n                            \"vita\",\n                            \"vxworks\",\n                            \"wasi\",\n                            \"wasm\",\n                            \"watchos\",\n                            \"windows\",\n                            \"xous\"\n                        ]\n                    }\n                },\n                \"environments\": {\n                    \"type\": \"array\",\n                    \"description\": \"List of environment conditions, any of which must match (NAME=VALUE) or be present (NAME).\",\n                    \"items\": {\n                        \"type\": \"string\"\n                    }\n                }\n            }\n        },\n        \"--scope\": {\n            \"type\": \"array\",\n            \"description\": \"Scoped tables for conditional configuration\",\n            \"items\": {\n                \"$comment\": \"https://json-schema.org/understanding-json-schema/structuring#recursion\",\n                \"$ref\": \"#\"\n            }\n        }\n    }\n}\n";