432 lines · 17.1 KB · JSON
RawDownload
{    "$schema": "http://json-schema.org/draft-07/schema",    "title": "Jujutsu config",    "type": "object",    "description": "User configuration for Jujutsu VCS. See https://github.com/martinvonz/jj/blob/main/docs/config.md for details",    "properties": {        "user": {            "type": "object",            "description": "Settings about the user",            "properties": {                "name": {                    "type": "string",                    "description": "Full name of the user, used in commits"                },                "email": {                    "type": "string",                    "description": "User's email address, used in commits",                    "format": "email"                }            }        },        "operation": {            "type": "object",            "description": "Metadata to be attached to jj operations (shown in jj op log)",            "properties": {                "hostname": {                    "type": "string",                    "format": "hostname"                },                "username": {                    "type": "string"                }            }        },        "ui": {            "type": "object",            "description": "UI settings",            "properties": {                "allow-init-native": {                    "type": "boolean",                    "description": "Whether to allow initializing a repo with the native backend",                    "default": false                },                "default-command": {                    "type": "string",                    "description": "Default command to run when no explicit command is given",                    "default": "log",                    "oneOf": [                        {                            "type": "string"                        },                        {                            "type": "array",                            "items": {                                "type": "string"                            }                        }                    ]                },                "default-description": {                    "type": "string",                    "description": "Default description to use when describing changes with an empty description",                    "default": ""                },                "color": {                    "description": "Whether to colorize command output",                    "enum": [                        "always",                        "never",                        "auto"                    ],                    "default": "auto"                },                "paginate": {                    "type": "string",                    "description": "Whether or not to use a pager",                    "enum": [                        "never",                        "auto"                    ],                    "default": "auto"                },                "pager": {                    "type": "string",                    "description": "Pager to use for displaying command output",                    "default": "less -FRX"                },                "diff": {                    "type": "object",                    "description": "Options for how diffs are displayed",                    "properties": {                        "format": {                            "description": "The diff format to use",                            "enum": [                                "color-words",                                "git",                                "summary"                            ],                            "default": "color-words"                        },                        "tool": {                            "type": "string",                            "description": "External tool for generating diffs"                        }                    }                },                "diff-instructions": {                    "type": "boolean",                    "description": "Whether to generate the JJ-INSTRUCTIONS file as part of editing a diff",                    "default": true                },                "graph": {                    "type": "object",                    "description": "Options for rendering revision graphs from jj log etc",                    "properties": {                        "style": {                            "description": "Style of connectors/markings used to render the graph. See https://github.com/martinvonz/jj/blob/main/docs/config.md#graph-style",                            "enum": [                                "curved",                                "square",                                "ascii",                                "ascii-large"                            ],                            "default": "curved"                        }                    }                },                "log-word-wrap": {                    "type": "boolean",                    "description": "Whether to wrap log template output",                    "default": false                },                "log-synthetic-elided-nodes": {                    "type": "boolean",                    "description": "Whether to render elided parts of the graph as synthetic nodes.",                    "default": false                },                "editor": {                    "type": "string",                    "description": "Editor to use for commands that involve editing text"                },                "diff-editor": {                    "type": "string",                    "description": "Editor tool to use for editing diffs",                    "default": "meld"                },                "merge-editor": {                    "type": "string",                    "description": "Tool to use for resolving three-way merges. Behavior for a given tool name can be configured in merge-tools.TOOL tables"                }            }        },        "colors": {            "type": "object",            "description": "Mapping from jj formatter labels to colors",            "definitions": {                "colors": {                    "enum": [                        "default",                        "black",                        "red",                        "green",                        "yellow",                        "blue",                        "magenta",                        "cyan",                        "white",                        "bright black",                        "bright red",                        "bright green",                        "bright yellow",                        "bright blue",                        "bright magenta",                        "bright cyan",                        "bright white"                    ]                },                "basicFormatterLabels": {                    "enum": [                        "description",                        "change_id",                        "commit_id",                        "author",                        "committer",                        "working_copies",                        "current_working_copy",                        "branches",                        "tags",                        "git_refs",                        "is_git_head",                        "divergent",                        "hidden",                        "conflict",                        "root"                    ]                }            },            "propertyNames": {                "oneOf": [                    {                        "$ref": "#/properties/colors/definitions/basicFormatterLabels"                    },                    {                        "type": "string"                    }                ]            },            "additionalProperties": {                "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",                "oneOf": [                    {                        "$ref": "#/properties/colors/definitions/colors"                    },                    {                        "type": "object",                        "properties": {                            "fg": {                                "$ref": "#/properties/colors/definitions/colors"                            },                            "bg": {                                "$ref": "#/properties/colors/definitions/colors"                            },                            "bold": {                                "type": "boolean"                            },                            "underline": {                                "type": "boolean"                            }                        }                    }                ]            }        },        "git": {            "type": "object",            "description": "Settings for git behavior (when using git backend)",            "properties": {                "auto-local-branch": {                    "type": "boolean",                    "description": "Whether jj creates a local branch with the same name when it imports a remote-tracking branch from git. See https://github.com/martinvonz/jj/blob/main/docs/config.md#automatic-local-branch-creation",                    "default": false                },                "abandon-unreachable-commits": {                    "type": "boolean",                    "description": "Whether jj should abandon commits that became unreachable in Git.",                    "default": true                },                "push-branch-prefix": {                    "type": "string",                    "description": "Prefix used when pushing a change ID as a new branch",                    "default": "push-"                },                "fetch": {                    "description": "The remote(s) from which commits are fetched",                    "default": "origin",                    "oneOf": [                        {                            "type": "string"                        },                        {                            "type": "array",                            "items": {                                "type": "string"                            }                        }                    ]                },                "push": {                    "type": "string",                    "description": "The remote to which commits are pushed",                    "default": "origin"                }            }        },        "merge-tools": {            "type": "object",            "description": "Tables of custom options to pass to the given merge tool (selected in ui.merge-editor)",            "additionalProperties": {                "type": "object",                "properties": {                    "program": {                        "type": "string"                    },                    "diff-args": {                        "type": "array",                        "items": {                            "type": "string"                        }                    },                    "edit-args": {                        "type": "array",                        "items": {                            "type": "string"                        }                    },                    "merge-args": {                        "type": "array",                        "items": {                            "type": "string"                        }                    },                    "merge-tool-edits-conflict-markers": {                        "type": "boolean",                        "description": "Whether to populate the output file with conflict markers before starting the merge tool. See https://github.com/martinvonz/jj/blob/main/docs/config.md#editing-conflict-markers-with-a-tool-or-a-text-editor",                        "default": false                    }                }            }        },        "revsets": {            "type": "object",            "description": "Revset expressions used by various commands",            "properties": {                "log": {                    "type": "string",                    "description": "Default set of revisions to show when no explicit revset is given for jj log and similar commands",                    "default": "@ | ancestors(immutable_heads().., 2) | trunk()"                },                "short-prefixes": {                    "type": "string",                    "description": "Revisions to give shorter change and commit IDs to",                    "default": "<revsets.log>"                }            },            "additionalProperties": {                "type": "string"            }        },        "revset-aliases": {            "type": "object",            "description": "Custom symbols/function aliases that can used in revset expressions",            "properties": {                "immutable_heads()": {                    "type": "string",                    "description": "Revisions to consider immutable. Ancestors of these are also considered immutable. The root commit is always considered immutable.",                    "default": "trunk() | tags()"                }            },            "additionalProperties": {                "type": "string"            }        },        "template-aliases": {            "type": "object",            "description": "Custom symbols/function aliases that can used in templates",            "additionalProperties": {                "type": "string"            }        },        "aliases": {            "type": "object",            "description": "Custom subcommand aliases to be supported by the jj command",            "additionalProperties": {                "type": "array",                "items": {                    "type": "string"                }            }        },        "snapshot": {            "type": "object",            "description": "Parameters governing automatic capture of files into the working copy commit",            "properties": {                "max-new-file-size": {                    "type": [                        "integer",                        "string"                    ],                    "description": "New files with a size in bytes above this threshold are not snapshotted, unless the threshold is 0",                    "default": "1MiB"                }            }        },        "signing": {            "type": "object",            "description": "Settings for verifying and creating cryptographic commit signatures",            "properties": {                "backend": {                    "type": "string",                    "enum": ["gpg", "ssh"],                    "description": "The backend to use for signing commits"                },                "key": {                    "type": "string",                    "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"                },                "sign-all": {                    "type": "boolean",                    "description": "Whether to sign all commits by default. Overridden by global `--no-sign` option",                    "default": false                },                "backends": {                    "type": "object",                    "description": "Tables of options to pass to specific signing backends",                    "properties": {                        "gpg": {                            "type": "object",                            "properties": {                                "program": {                                    "type": "string",                                    "description": "Path to the gpg program to be called",                                    "default": "gpg"                                },                                "allow-expired-keys": {                                    "type": "boolean",                                    "description": "Whether to consider signatures generated with an expired key as invalid",                                    "default": true                                }                            }                        },                        "ssh": {                            "type": "object",                            "properties": {                                "program": {                                    "type": "string",                                    "description": "Path to the ssh-keygen program to be called",                                    "default": "ssh-keygen"                                },                                "allowed-signers": {                                    "type": "boolean",                                    "description": "Path to an allowed signers file used for signature verification",                                    "default": true                                }                            }                        }                    },                    "additionalProperties": true                }            }        }    }}