just playing with tangled
at diffedit3 486 lines 20 kB view raw
1{ 2 "$schema": "http://json-schema.org/draft-07/schema", 3 "title": "Jujutsu config", 4 "type": "object", 5 "description": "User configuration for Jujutsu VCS. See https://github.com/martinvonz/jj/blob/main/docs/config.md for details", 6 "properties": { 7 "user": { 8 "type": "object", 9 "description": "Settings about the user", 10 "properties": { 11 "name": { 12 "type": "string", 13 "description": "Full name of the user, used in commits" 14 }, 15 "email": { 16 "type": "string", 17 "description": "User's email address, used in commits", 18 "format": "email" 19 } 20 } 21 }, 22 "operation": { 23 "type": "object", 24 "description": "Metadata to be attached to jj operations (shown in jj op log)", 25 "properties": { 26 "hostname": { 27 "type": "string", 28 "format": "hostname" 29 }, 30 "username": { 31 "type": "string" 32 } 33 } 34 }, 35 "ui": { 36 "type": "object", 37 "description": "UI settings", 38 "properties": { 39 "allow-init-native": { 40 "type": "boolean", 41 "description": "Whether to allow initializing a repo with the native backend", 42 "default": false 43 }, 44 "allow-filesets": { 45 "type": "boolean", 46 "description": "Whether to parse path arguments as fileset expressions", 47 "default": false 48 }, 49 "always-allow-large-revsets": { 50 "type": "boolean", 51 "description": "Whether to allow large revsets to be used in all commands without the `all:` modifier", 52 "default": false 53 }, 54 "default-command": { 55 "type": "string", 56 "description": "Default command to run when no explicit command is given", 57 "default": "log", 58 "oneOf": [ 59 { 60 "type": "string" 61 }, 62 { 63 "type": "array", 64 "items": { 65 "type": "string" 66 } 67 } 68 ] 69 }, 70 "default-description": { 71 "type": "string", 72 "description": "Default description to use when describing changes with an empty description", 73 "default": "" 74 }, 75 "color": { 76 "description": "Whether to colorize command output", 77 "enum": [ 78 "always", 79 "never", 80 "auto" 81 ], 82 "default": "auto" 83 }, 84 "paginate": { 85 "type": "string", 86 "description": "Whether or not to use a pager", 87 "enum": [ 88 "never", 89 "auto" 90 ], 91 "default": "auto" 92 }, 93 "pager": { 94 "type": "string", 95 "description": "Pager to use for displaying command output", 96 "default": "less -FRX" 97 }, 98 "diff": { 99 "type": "object", 100 "description": "Options for how diffs are displayed", 101 "properties": { 102 "format": { 103 "description": "The diff format to use", 104 "enum": [ 105 "color-words", 106 "git", 107 "summary" 108 ], 109 "default": "color-words" 110 }, 111 "tool": { 112 "type": "string", 113 "description": "External tool for generating diffs" 114 } 115 } 116 }, 117 "diff-instructions": { 118 "type": "boolean", 119 "description": "Whether to generate the JJ-INSTRUCTIONS file as part of editing a diff", 120 "default": true 121 }, 122 "graph": { 123 "type": "object", 124 "description": "Options for rendering revision graphs from jj log etc", 125 "properties": { 126 "style": { 127 "description": "Style of connectors/markings used to render the graph. See https://github.com/martinvonz/jj/blob/main/docs/config.md#graph-style", 128 "enum": [ 129 "curved", 130 "square", 131 "ascii", 132 "ascii-large" 133 ], 134 "default": "curved" 135 } 136 } 137 }, 138 "log-word-wrap": { 139 "type": "boolean", 140 "description": "Whether to wrap log template output", 141 "default": false 142 }, 143 "log-synthetic-elided-nodes": { 144 "type": "boolean", 145 "description": "Whether to render elided parts of the graph as synthetic nodes.", 146 "default": true 147 }, 148 "editor": { 149 "type": "string", 150 "description": "Editor to use for commands that involve editing text" 151 }, 152 "diff-editor": { 153 "type": "string", 154 "description": "Editor tool to use for editing diffs", 155 "default": "meld" 156 }, 157 "merge-editor": { 158 "type": "string", 159 "description": "Tool to use for resolving three-way merges. Behavior for a given tool name can be configured in merge-tools.TOOL tables" 160 } 161 } 162 }, 163 "core": { 164 "type": "object", 165 "properties": { 166 "fsmonitor": { 167 "type": "string", 168 "enum": ["none", "watchman"], 169 "description": "Whether to use an external filesystem monitor, useful for large repos" 170 } 171 } 172 }, 173 "colors": { 174 "type": "object", 175 "description": "Mapping from jj formatter labels to colors", 176 "definitions": { 177 "colorNames": { 178 "enum": [ 179 "default", 180 "black", 181 "red", 182 "green", 183 "yellow", 184 "blue", 185 "magenta", 186 "cyan", 187 "white", 188 "bright black", 189 "bright red", 190 "bright green", 191 "bright yellow", 192 "bright blue", 193 "bright magenta", 194 "bright cyan", 195 "bright white" 196 ] 197 }, 198 "hexColor": { 199 "type": "string", 200 "pattern": "^#[0-9a-fA-F]{6}$" 201 }, 202 "colors": { 203 "oneOf": [ 204 { 205 "$ref": "#/properties/colors/definitions/colorNames" 206 }, 207 { 208 "$ref": "#/properties/colors/definitions/hexColor" 209 } 210 ] 211 }, 212 "basicFormatterLabels": { 213 "enum": [ 214 "description", 215 "change_id", 216 "commit_id", 217 "author", 218 "committer", 219 "working_copies", 220 "current_working_copy", 221 "branches", 222 "tags", 223 "git_refs", 224 "is_git_head", 225 "divergent", 226 "hidden", 227 "conflict", 228 "root" 229 ] 230 } 231 }, 232 "propertyNames": { 233 "oneOf": [ 234 { 235 "$ref": "#/properties/colors/definitions/basicFormatterLabels" 236 }, 237 { 238 "type": "string" 239 } 240 ] 241 }, 242 "additionalProperties": { 243 "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", 244 "oneOf": [ 245 { 246 "$ref": "#/properties/colors/definitions/colors" 247 }, 248 { 249 "type": "object", 250 "properties": { 251 "fg": { 252 "$ref": "#/properties/colors/definitions/colors" 253 }, 254 "bg": { 255 "$ref": "#/properties/colors/definitions/colors" 256 }, 257 "bold": { 258 "type": "boolean" 259 }, 260 "underline": { 261 "type": "boolean" 262 } 263 } 264 } 265 ] 266 } 267 }, 268 "git": { 269 "type": "object", 270 "description": "Settings for git behavior (when using git backend)", 271 "properties": { 272 "auto-local-branch": { 273 "type": "boolean", 274 "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", 275 "default": false 276 }, 277 "abandon-unreachable-commits": { 278 "type": "boolean", 279 "description": "Whether jj should abandon commits that became unreachable in Git.", 280 "default": true 281 }, 282 "push-branch-prefix": { 283 "type": "string", 284 "description": "Prefix used when pushing a change ID as a new branch", 285 "default": "push-" 286 }, 287 "fetch": { 288 "description": "The remote(s) from which commits are fetched", 289 "default": "origin", 290 "oneOf": [ 291 { 292 "type": "string" 293 }, 294 { 295 "type": "array", 296 "items": { 297 "type": "string" 298 } 299 } 300 ] 301 }, 302 "push": { 303 "type": "string", 304 "description": "The remote to which commits are pushed", 305 "default": "origin" 306 } 307 } 308 }, 309 "merge-tools": { 310 "type": "object", 311 "description": "Tables of custom options to pass to the given merge tool (selected in ui.merge-editor)", 312 "additionalProperties": { 313 "type": "object", 314 "properties": { 315 "program": { 316 "type": "string" 317 }, 318 "diff-args": { 319 "type": "array", 320 "items": { 321 "type": "string" 322 } 323 }, 324 "edit-args": { 325 "type": "array", 326 "items": { 327 "type": "string" 328 } 329 }, 330 "merge-args": { 331 "type": "array", 332 "items": { 333 "type": "string" 334 } 335 }, 336 "merge-tool-edits-conflict-markers": { 337 "type": "boolean", 338 "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", 339 "default": false 340 } 341 } 342 } 343 }, 344 "revsets": { 345 "type": "object", 346 "description": "Revset expressions used by various commands", 347 "properties": { 348 "log": { 349 "type": "string", 350 "description": "Default set of revisions to show when no explicit revset is given for jj log and similar commands", 351 "default": "@ | ancestors(immutable_heads().., 2) | trunk()" 352 }, 353 "short-prefixes": { 354 "type": "string", 355 "description": "Revisions to give shorter change and commit IDs to", 356 "default": "<revsets.log>" 357 } 358 }, 359 "additionalProperties": { 360 "type": "string" 361 } 362 }, 363 "revset-aliases": { 364 "type": "object", 365 "description": "Custom symbols/function aliases that can used in revset expressions", 366 "properties": { 367 "immutable_heads()": { 368 "type": "string", 369 "description": "Revisions to consider immutable. Ancestors of these are also considered immutable. The root commit is always considered immutable.", 370 "default": "trunk() | tags()" 371 } 372 }, 373 "additionalProperties": { 374 "type": "string" 375 } 376 }, 377 "template-aliases": { 378 "type": "object", 379 "description": "Custom symbols/function aliases that can used in templates", 380 "additionalProperties": { 381 "type": "string" 382 } 383 }, 384 "aliases": { 385 "type": "object", 386 "description": "Custom subcommand aliases to be supported by the jj command", 387 "additionalProperties": { 388 "type": "array", 389 "items": { 390 "type": "string" 391 } 392 } 393 }, 394 "snapshot": { 395 "type": "object", 396 "description": "Parameters governing automatic capture of files into the working copy commit", 397 "properties": { 398 "max-new-file-size": { 399 "type": [ 400 "integer", 401 "string" 402 ], 403 "description": "New files with a size in bytes above this threshold are not snapshotted, unless the threshold is 0", 404 "default": "1MiB" 405 } 406 } 407 }, 408 "experimental-advance-branches": { 409 "type": "object", 410 "description": "Settings controlling the 'advance-branches' feature which moves branches forward when new commits are created.", 411 "properties": { 412 "enabled-branches": { 413 "type": "array", 414 "description": "Patterns used to identify branches which may be advanced.", 415 "items": { 416 "type": "string" 417 } 418 }, 419 "disabled-branches": { 420 "type": "array", 421 "description": "Patterns used to identify branches which are not advanced. Takes precedence over 'enabled-branches'.", 422 "items": { 423 "type": "string" 424 } 425 } 426 } 427 }, 428 "signing": { 429 "type": "object", 430 "description": "Settings for verifying and creating cryptographic commit signatures", 431 "properties": { 432 "backend": { 433 "type": "string", 434 "enum": ["gpg", "ssh"], 435 "description": "The backend to use for signing commits" 436 }, 437 "key": { 438 "type": "string", 439 "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" 440 }, 441 "sign-all": { 442 "type": "boolean", 443 "description": "Whether to sign all commits by default. Overridden by global `--no-sign` option", 444 "default": false 445 }, 446 "backends": { 447 "type": "object", 448 "description": "Tables of options to pass to specific signing backends", 449 "properties": { 450 "gpg": { 451 "type": "object", 452 "properties": { 453 "program": { 454 "type": "string", 455 "description": "Path to the gpg program to be called", 456 "default": "gpg" 457 }, 458 "allow-expired-keys": { 459 "type": "boolean", 460 "description": "Whether to consider signatures generated with an expired key as invalid", 461 "default": true 462 } 463 } 464 }, 465 "ssh": { 466 "type": "object", 467 "properties": { 468 "program": { 469 "type": "string", 470 "description": "Path to the ssh-keygen program to be called", 471 "default": "ssh-keygen" 472 }, 473 "allowed-signers": { 474 "type": "boolean", 475 "description": "Path to an allowed signers file used for signature verification", 476 "default": true 477 } 478 } 479 } 480 }, 481 "additionalProperties": true 482 } 483 } 484 } 485 } 486}