{"thread":{"id":"63603","subject":"[PATCH 0/9] Doc git log","startedAt":"2025-06-08T09:09:50Z","lastAt":"2025-08-20T21:23:45Z","messageCount":50,"participants":["Jean-Noël Avila via GitGitGadget","Junio C Hamano","Jean-Noël AVILA","Kristoffer Haugsbakk","SZEDER Gábor","Jean-Noël Avila"],"isPatch":true,"patchVersion":1,"patchTotal":9},"messages":[{"id":"519912","messageId":"pull.1933.git.1749373787.gitgitgadget@gmail.com","threadId":"63603","inReplyTo":null,"subject":"[PATCH 0/9] Doc git log","fromName":"Jean-Noël Avila via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2025-06-08T09:09:37Z","receivedAt":"2025-06-08T09:09:50Z","isPatch":true,"sender":{"key":"jn.avila@free.fr","avatar":"https://avatars.githubusercontent.com/u/156172?v=4"},"body":"This series converts the man page of git log to the synopsis format style.\nGit log is the second largest manpage after git config, which makes the\nchanges quite large.\n\nA special note about the log format description which required escaping the\nsynopsis processing of parentheses.\n\nJean-Noël Avila (9):\n  doc: convert git-log to new documentation format\n  doc: git-log convert rev-list-description  to new doc format\n  doc: git-log: convert line range options to new doc format\n  doc: git-log: convert line range format to new doc format\n  doc: git-log: convert rev list options to new doc format\n  doc: git-log: convert pretty options to new doc format\n  doc: git-log: convert pretty formats to new doc format\n  doc: git-log: convert diff options to new doc format\n  doc: git-log: convert log config to new doc format\n\n Documentation/asciidoc.conf.in             |   2 +-\n Documentation/asciidoctor-extensions.rb.in |   4 +-\n Documentation/config/log.adoc              |  45 +--\n Documentation/diff-options.adoc            |  40 ++-\n Documentation/git-log.adoc                 |  83 ++---\n Documentation/line-range-format.adoc       |  26 +-\n Documentation/line-range-options.adoc      |  10 +-\n Documentation/pretty-formats.adoc          | 283 +++++++--------\n Documentation/pretty-options.adoc          |  71 ++--\n Documentation/rev-list-description.adoc    |   6 +-\n Documentation/rev-list-options.adoc        | 390 ++++++++++-----------\n 11 files changed, 490 insertions(+), 470 deletions(-)\n\n\nbase-commit: b32feae0f1b21faaf8e191e8d3314a32470a536b\nPublished-As: https://github.com/gitgitgadget/git/releases/tag/pr-1933%2Fjnavila%2Fdoc_git_log-v1\nFetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1933/jnavila/doc_git_log-v1\nPull-Request: https://github.com/gitgitgadget/git/pull/1933\n-- \ngitgitgadget\n"},{"id":"519913","messageId":"1ce06a184817d0493f4e56725aeb8ed5ccae1ba4.1749373787.git.gitgitgadget@gmail.com","threadId":"63603","inReplyTo":"pull.1933.git.1749373787.gitgitgadget@gmail.com","subject":"[PATCH 1/9] doc: convert git-log to new documentation format","fromName":"Jean-Noël Avila via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2025-06-08T09:09:38Z","receivedAt":"2025-06-08T09:09:51Z","isPatch":true,"sender":{"key":"jn.avila@free.fr","avatar":"https://avatars.githubusercontent.com/u/156172?v=4"},"body":"From: =?UTF-8?q?Jean-No=C3=ABl=20Avila?= <jn.avila@free.fr>\n\n- Switch the synopsis to a synopsis block which will automatically\n  format placeholders in italics and keywords in monospace\n- Use _<placeholder>_ instead of <placeholder> in the description\n- Use `backticks` for keywords and more complex option\ndescriptions. The new rendering engine will apply synopsis rules to\nthese spans.\n\nSigned-off-by: Jean-Noël Avila <jn.avila@free.fr>\n---\n Documentation/git-log.adoc | 83 ++++++++++++++++++++------------------\n 1 file changed, 44 insertions(+), 39 deletions(-)\n\ndiff --git a/Documentation/git-log.adoc b/Documentation/git-log.adoc\nindex ae8a7e2d6389..654c3d397dff 100644\n--- a/Documentation/git-log.adoc\n+++ b/Documentation/git-log.adoc\n@@ -8,8 +8,8 @@ git-log - Show commit logs\n \n SYNOPSIS\n --------\n-[verse]\n-'git log' [<options>] [<revision-range>] [[--] <path>...]\n+[synopsis]\n+git log [<options>] [<revision-range>] [[--] <path>...]\n \n DESCRIPTION\n -----------\n@@ -27,27 +27,32 @@ each commit introduces are shown.\n OPTIONS\n -------\n \n---follow::\n+`--follow`::\n \tContinue listing the history of a file beyond renames\n \t(works only for a single file).\n \n---no-decorate::\n---decorate[=short|full|auto|no]::\n-\tPrint out the ref names of any commits that are shown. If 'short' is\n-\tspecified, the ref name prefixes 'refs/heads/', 'refs/tags/' and\n-\t'refs/remotes/' will not be printed. If 'full' is specified, the\n-\tfull ref name (including prefix) will be printed. If 'auto' is\n-\tspecified, then if the output is going to a terminal, the ref names\n-\tare shown as if 'short' were given, otherwise no ref names are\n-\tshown. The option `--decorate` is short-hand for `--decorate=short`.\n-\tDefault to configuration value of `log.decorate` if configured,\n-\totherwise, `auto`.\n-\n---decorate-refs=<pattern>::\n---decorate-refs-exclude=<pattern>::\n+`--no-decorate`::\n+`--decorate[=(short|full|auto|no)]`::\n+\tPrint out the ref names of any commits that are shown. Possible values\n+\tare:\n++\n+----\n+`short`;; the ref name prefixes `refs/heads/`, `refs/tags/` and\n+\t`refs/remotes/` are not printed.\n+`full`;; the full ref name (including prefix) is printed.\n+`auto`:: if the output is going to a terminal, the ref names\n+\tare shown as if `short` were given, otherwise no ref names are\n+\tshown.\n+----\n++\n+The option `--decorate` is short-hand for `--decorate=short`. Default to\n+configuration value of `log.decorate` if configured, otherwise, `auto`.\n+\n+`--decorate-refs=<pattern>`::\n+`--decorate-refs-exclude=<pattern>`::\n \tFor each candidate reference, do not use it for decoration if it\n-\tmatches any patterns given to `--decorate-refs-exclude` or if it\n-\tdoesn't match any of the patterns given to `--decorate-refs`. The\n+\tmatches any of _<pattern>_ given to `--decorate-refs-exclude` or if it\n+\tdoesn't match any of _<pattern>_ given to `--decorate-refs`. The\n \t`log.excludeDecoration` config option allows excluding refs from\n \tthe decorations, but an explicit `--decorate-refs` pattern will\n \toverride a match in `log.excludeDecoration`.\n@@ -56,51 +61,51 @@ If none of these options or config settings are given, then references are\n used as decoration if they match `HEAD`, `refs/heads/`, `refs/remotes/`,\n `refs/stash/`, or `refs/tags/`.\n \n---clear-decorations::\n+`--clear-decorations`::\n \tWhen specified, this option clears all previous `--decorate-refs`\n \tor `--decorate-refs-exclude` options and relaxes the default\n \tdecoration filter to include all references. This option is\n \tassumed if the config value `log.initialDecorationSet` is set to\n \t`all`.\n \n---source::\n+`--source`::\n \tPrint out the ref name given on the command line by which each\n \tcommit was reached.\n \n---[no-]mailmap::\n---[no-]use-mailmap::\n+`--[no-]mailmap`::\n+`--[no-]use-mailmap`::\n \tUse mailmap file to map author and committer names and email\n \taddresses to canonical real names and email addresses. See\n \tlinkgit:git-shortlog[1].\n \n---full-diff::\n+`--full-diff`::\n \tWithout this flag, `git log -p <path>...` shows commits that\n \ttouch the specified paths, and diffs about the same specified\n \tpaths.  With this, the full diff is shown for commits that touch\n-\tthe specified paths; this means that \"<path>...\" limits only\n+\tthe specified paths; this means that \"`<path>...`\" limits only\n \tcommits, and doesn't limit diff for those commits.\n +\n Note that this affects all diff-based output types, e.g. those\n produced by `--stat`, etc.\n \n---log-size::\n-\tInclude a line ``log size <number>'' in the output for each commit,\n-\twhere <number> is the length of that commit's message in bytes.\n+`--log-size`::\n+\tInclude a line `log size <number>` in the output for each commit,\n+\twhere _<number>_ is the length of that commit's message in bytes.\n \tIntended to speed up tools that read log messages from `git log`\n \toutput by allowing them to allocate space in advance.\n \n include::line-range-options.adoc[]\n \n-<revision-range>::\n+_<revision-range>_::\n \tShow only commits in the specified revision range.  When no\n-\t<revision-range> is specified, it defaults to `HEAD` (i.e. the\n+\t_<revision-range>_ is specified, it defaults to `HEAD` (i.e. the\n \twhole history leading to the current commit).  `origin..HEAD`\n \tspecifies all the commits reachable from the current commit\n \t(i.e. `HEAD`), but not from `origin`. For a complete list of\n-\tways to spell <revision-range>, see the 'Specifying Ranges'\n+\tways to spell _<revision-range>_, see the 'Specifying Ranges'\n \tsection of linkgit:gitrevisions[7].\n \n-[--] <path>...::\n+`[--] <path>...`::\n \tShow only commits that are enough to explain how the files\n \tthat match the specified paths came to be.  See 'History\n \tSimplification' below for details and other simplification\n@@ -145,14 +150,14 @@ EXAMPLES\n \n `git log --since=\"2 weeks ago\" -- gitk`::\n \n-\tShow the changes during the last two weeks to the file 'gitk'.\n+\tShow the changes during the last two weeks to the file `gitk`.\n \tThe `--` is necessary to avoid confusion with the *branch* named\n-\t'gitk'\n+\t`gitk`\n \n `git log --name-status release..test`::\n \n-\tShow the commits that are in the \"test\" branch but not yet\n-\tin the \"release\" branch, along with the list of paths\n+\tShow the commits that are in the \"`test`\" branch but not yet\n+\tin the \"`release`\" branch, along with the list of paths\n \teach commit modifies.\n \n `git log --follow builtin/rev-list.c`::\n@@ -164,7 +169,7 @@ EXAMPLES\n `git log --branches --not --remotes=origin`::\n \n \tShows all commits that are in any of local branches but not in\n-\tany of remote-tracking branches for 'origin' (what you have that\n+\tany of remote-tracking branches for `origin` (what you have that\n \torigin doesn't).\n \n `git log master --not --remotes=*/master`::\n@@ -200,11 +205,11 @@ CONFIGURATION\n See linkgit:git-config[1] for core variables and linkgit:git-diff[1]\n for settings related to diff generation.\n \n-format.pretty::\n+`format.pretty`::\n \tDefault for the `--format` option.  (See 'Pretty Formats' above.)\n \tDefaults to `medium`.\n \n-i18n.logOutputEncoding::\n+`i18n.logOutputEncoding`::\n \tEncoding to use when displaying logs.  (See 'Discussion' above.)\n \tDefaults to the value of `i18n.commitEncoding` if set, and UTF-8\n \totherwise.\n-- \ngitgitgadget\n\n"},{"id":"519914","messageId":"ff22d0f1adf823ea3baf3ad3ddbf25add1187ce6.1749373787.git.gitgitgadget@gmail.com","threadId":"63603","inReplyTo":"pull.1933.git.1749373787.gitgitgadget@gmail.com","subject":"[PATCH 2/9] doc: git-log convert rev-list-description to new doc format","fromName":"Jean-Noël Avila via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2025-06-08T09:09:39Z","receivedAt":"2025-06-08T09:09:52Z","isPatch":true,"sender":{"key":"jn.avila@free.fr","avatar":"https://avatars.githubusercontent.com/u/156172?v=4"},"body":"From: =?UTF-8?q?Jean-No=C3=ABl=20Avila?= <jn.avila@free.fr>\n\nUse `backticks` for commit ranges. The new rendering engine will apply\nsynopsis rules to these spans.\n\nSigned-off-by: Jean-Noël Avila <jn.avila@free.fr>\n---\n Documentation/rev-list-description.adoc | 6 +++---\n 1 file changed, 3 insertions(+), 3 deletions(-)\n\ndiff --git a/Documentation/rev-list-description.adoc b/Documentation/rev-list-description.adoc\nindex a9efa7fa2722..82c680e57013 100644\n--- a/Documentation/rev-list-description.adoc\n+++ b/Documentation/rev-list-description.adoc\n@@ -26,8 +26,8 @@ endif::git-log[]\n means \"list all the commits which are reachable from 'foo' or 'bar', but\n not from 'baz'\".\n \n-A special notation \"'<commit1>'..'<commit2>'\" can be used as a\n-short-hand for \"^'<commit1>' '<commit2>'\". For example, either of\n+A special notation \"`<commit1>..<commit2>`\" can be used as a\n+short-hand for \"`^<commit1> <commit2>`\". For example, either of\n the following may be used interchangeably:\n \n ifdef::git-rev-list[]\n@@ -43,7 +43,7 @@ $ git log HEAD ^origin\n -----------------------------------------------------------------------\n endif::git-log[]\n \n-Another special notation is \"'<commit1>'...'<commit2>'\" which is useful\n+Another special notation is \"`<commit1>...<commit2>`\" which is useful\n for merges.  The resulting set of commits is the symmetric difference\n between the two operands.  The following two commands are equivalent:\n \n-- \ngitgitgadget\n\n"},{"id":"519915","messageId":"3992c1786ef3c87c8456f360e14c5b2d11b2622a.1749373787.git.gitgitgadget@gmail.com","threadId":"63603","inReplyTo":"pull.1933.git.1749373787.gitgitgadget@gmail.com","subject":"[PATCH 3/9] doc: git-log: convert line range options to new doc format","fromName":"Jean-Noël Avila via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2025-06-08T09:09:40Z","receivedAt":"2025-06-08T09:09:53Z","isPatch":true,"sender":{"key":"jn.avila@free.fr","avatar":"https://avatars.githubusercontent.com/u/156172?v=4"},"body":"From: =?UTF-8?q?Jean-No=C3=ABl=20Avila?= <jn.avila@free.fr>\n\n  format placeholders in italics and keywords in monospace\n- Use _<placeholder>_ instead of <placeholder> in the description\n- Use `backticks` for keywords and more complex option\ndescriptions. The new rendering engine will apply synopsis rules to\nthese spans.\n\nSigned-off-by: Jean-Noël Avila <jn.avila@free.fr>\n---\n Documentation/line-range-options.adoc | 10 +++++-----\n 1 file changed, 5 insertions(+), 5 deletions(-)\n\ndiff --git a/Documentation/line-range-options.adoc b/Documentation/line-range-options.adoc\nindex f275df3b69fa..c44ba05320f9 100644\n--- a/Documentation/line-range-options.adoc\n+++ b/Documentation/line-range-options.adoc\n@@ -1,12 +1,12 @@\n--L<start>,<end>:<file>::\n--L:<funcname>:<file>::\n+`-L<start>,<end>:<file>`::\n+`-L:<funcname>:<file>`::\n \n-\tTrace the evolution of the line range given by '<start>,<end>',\n-\tor by the function name regex '<funcname>', within the '<file>'. You may\n+\tTrace the evolution of the line range given by `<start>,<end>`,\n+\tor by the function name regex _<funcname>_, within the _<file>_. You may\n \tnot give any pathspec limiters.  This is currently limited to\n \ta walk starting from a single revision, i.e., you may only\n \tgive zero or one positive revision arguments, and\n-\t'<start>' and '<end>' (or '<funcname>') must exist in the starting revision.\n+\t_<start>_ and _<end>_ (or _<funcname>_) must exist in the starting revision.\n \tYou can specify this option more than once. Implies `--patch`.\n \tPatch output can be suppressed using `--no-patch`, but other diff formats\n \t(namely `--raw`, `--numstat`, `--shortstat`, `--dirstat`, `--summary`,\n-- \ngitgitgadget\n\n"},{"id":"519916","messageId":"d451d7f6c0aabfc92c6e6f07fb1fc537cf521926.1749373787.git.gitgitgadget@gmail.com","threadId":"63603","inReplyTo":"pull.1933.git.1749373787.gitgitgadget@gmail.com","subject":"[PATCH 4/9] doc: git-log: convert line range format to new doc format","fromName":"Jean-Noël Avila via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2025-06-08T09:09:41Z","receivedAt":"2025-06-08T09:09:53Z","isPatch":true,"sender":{"key":"jn.avila@free.fr","avatar":"https://avatars.githubusercontent.com/u/156172?v=4"},"body":"From: =?UTF-8?q?Jean-No=C3=ABl=20Avila?= <jn.avila@free.fr>\n\n- Use _<placeholder>_ instead of <placeholder> in the description\n- Use `backticks` for keywords and more complex option\ndescriptions. The new rendering engine will apply synopsis rules to\nthese spans.\n\nSigned-off-by: Jean-Noël Avila <jn.avila@free.fr>\n---\n Documentation/line-range-format.adoc | 26 +++++++++++++-------------\n 1 file changed, 13 insertions(+), 13 deletions(-)\n\ndiff --git a/Documentation/line-range-format.adoc b/Documentation/line-range-format.adoc\nindex 9b51e9fb6614..3cc2a14544cf 100644\n--- a/Documentation/line-range-format.adoc\n+++ b/Documentation/line-range-format.adoc\n@@ -1,30 +1,30 @@\n-'<start>' and '<end>' can take one of these forms:\n+_<start>_ and _<end>_ can take one of these forms:\n \n-- number\n+- _<number>_\n +\n-If '<start>' or '<end>' is a number, it specifies an\n+If _<start>_ or _<end>_ is a number, it specifies an\n absolute line number (lines count from 1).\n +\n \n-- `/regex/`\n+- `/<regex>/`\n +\n This form will use the first line matching the given\n-POSIX regex. If '<start>' is a regex, it will search from the end of\n+POSIX _<regex>_. If _<start>_ is a regex, it will search from the end of\n the previous `-L` range, if any, otherwise from the start of file.\n-If '<start>' is `^/regex/`, it will search from the start of file.\n-If '<end>' is a regex, it will search\n-starting at the line given by '<start>'.\n+If _<start>_ is `^/<regex>/`, it will search from the start of file.\n+If _<end>_ is a regex, it will search starting at the line given by\n+_<start>_.\n +\n \n-- +offset or -offset\n+- `+<offset>` or `-<offset>`\n +\n-This is only valid for '<end>' and will specify a number\n-of lines before or after the line given by '<start>'.\n+This is only valid for _<end>_ and will specify a number\n+of lines before or after the line given by _<start>_.\n \n +\n-If `:<funcname>` is given in place of '<start>' and '<end>', it is a\n+If `:<funcname>` is given in place of _<start>_ and _<end>_, it is a\n regular expression that denotes the range from the first funcname line\n-that matches '<funcname>', up to the next funcname line. `:<funcname>`\n+that matches _<funcname>_, up to the next funcname line. `:<funcname>`\n searches from the end of the previous `-L` range, if any, otherwise\n from the start of file. `^:<funcname>` searches from the start of\n file. The function names are determined in the same way as `git diff`\n-- \ngitgitgadget\n\n"},{"id":"519917","messageId":"5004a622c3f492dd1de8b2952ba24bf5e82f6f3c.1749373787.git.gitgitgadget@gmail.com","threadId":"63603","inReplyTo":"pull.1933.git.1749373787.gitgitgadget@gmail.com","subject":"[PATCH 6/9] doc: git-log: convert pretty options to new doc format","fromName":"Jean-Noël Avila via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2025-06-08T09:09:43Z","receivedAt":"2025-06-08T09:09:55Z","isPatch":true,"sender":{"key":"jn.avila@free.fr","avatar":"https://avatars.githubusercontent.com/u/156172?v=4"},"body":"From: =?UTF-8?q?Jean-No=C3=ABl=20Avila?= <jn.avila@free.fr>\n\n- Use _<placeholder>_ instead of <placeholder> in the description\n- Use `backticks` for keywords and more complex option\ndescriptions. The new rendering engine will apply synopsis rules to\nthese spans.\n\nSigned-off-by: Jean-Noël Avila <jn.avila@free.fr>\n---\n Documentation/pretty-options.adoc | 71 ++++++++++++++++---------------\n 1 file changed, 36 insertions(+), 35 deletions(-)\n\ndiff --git a/Documentation/pretty-options.adoc b/Documentation/pretty-options.adoc\nindex 23888cd612c9..061e7b97f17a 100644\n--- a/Documentation/pretty-options.adoc\n+++ b/Documentation/pretty-options.adoc\n@@ -1,38 +1,38 @@\n---pretty[=<format>]::\n---format=<format>::\n+`--pretty[=<format>]`::\n+`--format=<format>`::\n \n \tPretty-print the contents of the commit logs in a given format,\n-\twhere '<format>' can be one of 'oneline', 'short', 'medium',\n-\t'full', 'fuller', 'reference', 'email', 'raw', 'format:<string>'\n-\tand 'tformat:<string>'.  When '<format>' is none of the above,\n-\tand has '%placeholder' in it, it acts as if\n-\t'--pretty=tformat:<format>' were given.\n+\twhere '<format>' can be one of `oneline`, `short`, `medium`,\n+\t`full`, `fuller`, `reference`, `email`, `raw`, `format:<string>`\n+\tand `tformat:<string>`.  When _<format>_ is none of the above,\n+\tand has `%<placeholder>` in it, it acts as if\n+\t`--pretty=tformat:<format>` were given.\n +\n See the \"PRETTY FORMATS\" section for some additional details for each\n-format.  When '=<format>' part is omitted, it defaults to 'medium'.\n+format.  When `=<format>` part is omitted, it defaults to `medium.\n +\n-Note: you can specify the default pretty format in the repository\n+NOTE: you can specify the default pretty format in the repository\n configuration (see linkgit:git-config[1]).\n \n---abbrev-commit::\n+`--abbrev-commit`::\n \tInstead of showing the full 40-byte hexadecimal commit object\n \tname, show a prefix that names the object uniquely.\n-\t\"--abbrev=<n>\" (which also modifies diff output, if it is displayed)\n+\t`--abbrev=<n>` (which also modifies diff output, if it is displayed)\n \toption can be used to specify the minimum length of the prefix.\n +\n-This should make \"--pretty=oneline\" a whole lot more readable for\n+This should make `--pretty=oneline` a whole lot more readable for\n people using 80-column terminals.\n \n---no-abbrev-commit::\n+`--no-abbrev-commit`::\n \tShow the full 40-byte hexadecimal commit object name. This negates\n \t`--abbrev-commit`, either explicit or implied by other options such\n-\tas \"--oneline\". It also overrides the `log.abbrevCommit` variable.\n+\tas `--oneline`. It also overrides the `log.abbrevCommit` variable.\n \n---oneline::\n-\tThis is a shorthand for \"--pretty=oneline --abbrev-commit\"\n+`--oneline`::\n+\tThis is a shorthand for `--pretty=oneline --abbrev-commit`\n \tused together.\n \n---encoding=<encoding>::\n+`--encoding=<encoding>`::\n \tCommit objects record the character encoding used for the log message\n \tin their encoding header; this option can be used to tell the\n \tcommand to re-code the commit log message in the encoding\n@@ -44,22 +44,22 @@ people using 80-column terminals.\n \tto convert the commit, we will quietly output the original\n \tobject verbatim.\n \n---expand-tabs=<n>::\n---expand-tabs::\n---no-expand-tabs::\n+`--expand-tabs=<n>`::\n+`--expand-tabs`::\n+`--no-expand-tabs`::\n \tPerform a tab expansion (replace each tab with enough spaces\n-\tto fill to the next display column that is a multiple of '<n>')\n+\tto fill to the next display column that is a multiple of _<n>_)\n \tin the log message before showing it in the output.\n \t`--expand-tabs` is a short-hand for `--expand-tabs=8`, and\n \t`--no-expand-tabs` is a short-hand for `--expand-tabs=0`,\n \twhich disables tab expansion.\n +\n By default, tabs are expanded in pretty formats that indent the log\n-message by 4 spaces (i.e.  'medium', which is the default, 'full',\n-and 'fuller').\n+message by 4 spaces (i.e.  `medium`, which is the default, `full`,\n+and `fuller`).\n \n ifndef::git-rev-list[]\n---notes[=<ref>]::\n+`--notes[=<ref>]`::\n \tShow the notes (see linkgit:git-notes[1]) that annotate the\n \tcommit, when showing the commit log message.  This is the default\n \tfor `git log`, `git show` and `git whatchanged` commands when\n@@ -75,28 +75,29 @@ to display.  The ref can specify the full refname when it begins\n with `refs/notes/`; when it begins with `notes/`, `refs/` and otherwise\n `refs/notes/` is prefixed to form the full name of the ref.\n +\n-Multiple --notes options can be combined to control which notes are\n-being displayed. Examples: \"--notes=foo\" will show only notes from\n-\"refs/notes/foo\"; \"--notes=foo --notes\" will show both notes from\n+Multiple `--notes` options can be combined to control which notes are\n+being displayed. Examples: \"`--notes=foo`\" will show only notes from\n+`refs/notes/foo`; \"`--notes=foo --notes`\" will show both notes from\n \"refs/notes/foo\" and from the default notes ref(s).\n \n---no-notes::\n+`--no-notes`::\n \tDo not show notes. This negates the above `--notes` option, by\n \tresetting the list of notes refs from which notes are shown.\n \tOptions are parsed in the order given on the command line, so e.g.\n-\t\"--notes --notes=foo --no-notes --notes=bar\" will only show notes\n-\tfrom \"refs/notes/bar\".\n+\t\"`--notes --notes=foo --no-notes --notes=bar`\" will only show notes\n+\tfrom `refs/notes/bar`.\n \n---show-notes-by-default::\n+`--show-notes-by-default`::\n \tShow the default notes unless options for displaying specific\n \tnotes are given.\n \n---show-notes[=<ref>]::\n---[no-]standard-notes::\n-\tThese options are deprecated. Use the above --notes/--no-notes\n+`--show-notes[=<ref>]`::\n+`--standard-notes`::\n+`--no-standard-notes`::\n+\tThese options are deprecated. Use the above `--notes`/`--no-notes`\n \toptions instead.\n endif::git-rev-list[]\n \n---show-signature::\n+`--show-signature`::\n \tCheck the validity of a signed commit object by passing the signature\n \tto `gpg --verify` and show the output.\n-- \ngitgitgadget\n\n"},{"id":"519919","messageId":"71d9a37410265a8295f8516421135ee372c8ca7e.1749373787.git.gitgitgadget@gmail.com","threadId":"63603","inReplyTo":"pull.1933.git.1749373787.gitgitgadget@gmail.com","subject":"[PATCH 5/9] doc: git-log: convert rev list options to new doc format","fromName":"Jean-Noël Avila via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2025-06-08T09:09:42Z","receivedAt":"2025-06-08T09:09:55Z","isPatch":true,"sender":{"key":"jn.avila@free.fr","avatar":"https://avatars.githubusercontent.com/u/156172?v=4"},"body":"From: =?UTF-8?q?Jean-No=C3=ABl=20Avila?= <jn.avila@free.fr>\n\n- Fix some malformed synopis of options\n- Use _<placeholder>_ instead of <placeholder> in the description\n- Use `backticks` for keywords and more complex option\ndescriptions. The new rendering engine will apply synopsis rules to\nthese spans.\n- Add the '%' sign to the characters of keywords.\n\nSigned-off-by: Jean-Noël Avila <jn.avila@free.fr>\n---\n Documentation/asciidoc.conf.in             |   2 +-\n Documentation/asciidoctor-extensions.rb.in |   4 +-\n Documentation/rev-list-options.adoc        | 390 ++++++++++-----------\n 3 files changed, 198 insertions(+), 198 deletions(-)\n\ndiff --git a/Documentation/asciidoc.conf.in b/Documentation/asciidoc.conf.in\nindex 9d9139306e6f..ff9ea0a29445 100644\n--- a/Documentation/asciidoc.conf.in\n+++ b/Documentation/asciidoc.conf.in\n@@ -43,7 +43,7 @@ ifdef::doctype-book[]\n endif::doctype-book[]\n \n [literal-inlinemacro]\n-{eval:re.sub(r'(&lt;[-a-zA-Z0-9.]+&gt;)', r'<emphasis>\\1</emphasis>', re.sub(r'([\\[\\s|()>]|^|\\]|&gt;)(\\.?([-a-zA-Z0-9:+=~@\\\\\\*\\/_^\\$]+\\.?)+|,)',r'\\1<literal>\\2</literal>', re.sub(r'(\\.\\.\\.?)([^\\]$.])', r'<literal>\\1</literal>\\2', macros.passthroughs[int(attrs['passtext'][1:-1])] if attrs['passtext'][1:-1].isnumeric() else attrs['passtext'][1:-1])))}\n+{eval:re.sub(r'(&lt;[-a-zA-Z0-9.]+&gt;)', r'<emphasis>\\1</emphasis>', re.sub(r'([\\[\\s|()>]|^|\\]|&gt;)(\\.?([-a-zA-Z0-9:+=~@\\\\\\*\\/_^\\$%]+\\.?)+|,)',r'\\1<literal>\\2</literal>', re.sub(r'(\\.\\.\\.?)([^\\]$.])', r'<literal>\\1</literal>\\2', macros.passthroughs[int(attrs['passtext'][1:-1])] if attrs['passtext'][1:-1].isnumeric() else attrs['passtext'][1:-1])))}\n \n endif::backend-docbook[]\n \ndiff --git a/Documentation/asciidoctor-extensions.rb.in b/Documentation/asciidoctor-extensions.rb.in\nindex 8b7b16134967..fe64a62d9683 100644\n--- a/Documentation/asciidoctor-extensions.rb.in\n+++ b/Documentation/asciidoctor-extensions.rb.in\n@@ -73,7 +73,7 @@ module Git\n         elsif type == :monospaced\n           node.text.gsub(/(\\.\\.\\.?)([^\\]$\\.])/, '<literal>\\1</literal>\\2')\n               .gsub(/^\\.\\.\\.?$/, '<literal>\\0</literal>')\n-              .gsub(%r{([\\[\\s|()>.]|^|\\]|&gt;)(\\.?([-a-zA-Z0-9:+=~@/_^\\$\\\\\\*]+\\.{0,2})+|,)}, '\\1<literal>\\2</literal>')\n+              .gsub(%r{([\\[\\s|()>.]|^|\\]|&gt;)(\\.?([-a-zA-Z0-9:+=~@/_^\\$\\\\\\*%]+\\.{0,2})+|,)}, '\\1<literal>\\2</literal>')\n               .gsub(/(&lt;[-a-zA-Z0-9.]+&gt;)/, '<emphasis>\\1</emphasis>')\n         else\n           open, close, supports_phrase = QUOTE_TAGS[type]\n@@ -102,7 +102,7 @@ module Git\n         if node.type == :monospaced\n           node.text.gsub(/(\\.\\.\\.?)([^\\]$.])/, '<code>\\1</code>\\2')\n               .gsub(/^\\.\\.\\.?$/, '<code>\\0</code>')\n-              .gsub(%r{([\\[\\s|()>.]|^|\\]|&gt;)(\\.?([-a-zA-Z0-9:+=~@,/_^\\$\\\\\\*]+\\.{0,2})+)}, '\\1<code>\\2</code>')\n+              .gsub(%r{([\\[\\s|()>.]|^|\\]|&gt;)(\\.?([-a-zA-Z0-9:+=~@,/_^\\$\\\\\\*%]+\\.{0,2})+)}, '\\1<code>\\2</code>')\n               .gsub(/(&lt;[-a-zA-Z0-9.]+&gt;)/, '<em>\\1</em>')\n \n         else\ndiff --git a/Documentation/rev-list-options.adoc b/Documentation/rev-list-options.adoc\nindex d38875efdada..e4214035815d 100644\n--- a/Documentation/rev-list-options.adoc\n+++ b/Documentation/rev-list-options.adoc\n@@ -6,60 +6,60 @@ special notations explained in the description, additional commit\n limiting may be applied.\n \n Using more options generally further limits the output (e.g.\n-`--since=<date1>` limits to commits newer than `<date1>`, and using it\n+`--since=<date1>` limits to commits newer than _<date1>_, and using it\n with `--grep=<pattern>` further limits to commits whose log message\n-has a line that matches `<pattern>`), unless otherwise noted.\n+has a line that matches _<pattern>_), unless otherwise noted.\n \n Note that these are applied before commit\n ordering and formatting options, such as `--reverse`.\n \n--<number>::\n--n <number>::\n---max-count=<number>::\n-\tLimit the number of commits to output.\n+`-<number>`::\n+`-n <number>`::\n+`--max-count=<number>`::\n+\tLimit the output to _<number>_ commits.\n \n---skip=<number>::\n-\tSkip 'number' commits before starting to show the commit output.\n+`--skip=<number>`::\n+\tSkip _<number>_ commits before starting to show the commit output.\n \n---since=<date>::\n---after=<date>::\n-\tShow commits more recent than a specific date.\n+`--since=<date>`::\n+`--after=<date>`::\n+\tShow commits more recent than _<date>_.\n \n---since-as-filter=<date>::\n-\tShow all commits more recent than a specific date. This visits\n+`--since-as-filter=<date>`::\n+\tShow all commits more recent than _<date>_. This visits\n \tall commits in the range, rather than stopping at the first commit which\n-\tis older than a specific date.\n+\tis older than _<date>_.\n \n---until=<date>::\n---before=<date>::\n-\tShow commits older than a specific date.\n+`--until=<date>`::\n+`--before=<date>`::\n+\tShow commits older than _<date>_.\n \n ifdef::git-rev-list[]\n---max-age=<timestamp>::\n---min-age=<timestamp>::\n+`--max-age=<timestamp>`::\n+`--min-age=<timestamp>`::\n \tLimit the commits output to specified time range.\n endif::git-rev-list[]\n \n---author=<pattern>::\n---committer=<pattern>::\n+`--author=<pattern>`::\n+`--committer=<pattern>`::\n \tLimit the commits output to ones with author/committer\n-\theader lines that match the specified pattern (regular\n-\texpression).  With more than one `--author=<pattern>`,\n-\tcommits whose author matches any of the given patterns are\n+\theader lines that match the _<pattern>_ regular\n+\texpression.  With more than one `--author=<pattern>`,\n+\tcommits whose author matches any of the _<pattern>_ are\n \tchosen (similarly for multiple `--committer=<pattern>`).\n \n---grep-reflog=<pattern>::\n+`--grep-reflog=<pattern>`::\n \tLimit the commits output to ones with reflog entries that\n-\tmatch the specified pattern (regular expression). With\n+\tmatch the _<pattern>_ regular expression. With\n \tmore than one `--grep-reflog`, commits whose reflog message\n \tmatches any of the given patterns are chosen.  It is an\n \terror to use this option unless `--walk-reflogs` is in use.\n \n---grep=<pattern>::\n+`--grep=<pattern>`::\n \tLimit the commits output to ones with a log message that\n-\tmatches the specified pattern (regular expression).  With\n+\tmatches the _<pattern>_ regular expression.  With\n \tmore than one `--grep=<pattern>`, commits whose message\n-\tmatches any of the given patterns are chosen (but see\n+\tmatches any of the _<pattern>_ are chosen (but see\n \t`--all-match`).\n ifndef::git-rev-list[]\n +\n@@ -67,35 +67,35 @@ When `--notes` is in effect, the message from the notes is\n matched as if it were part of the log message.\n endif::git-rev-list[]\n \n---all-match::\n+`--all-match`::\n \tLimit the commits output to ones that match all given `--grep`,\n \tinstead of ones that match at least one.\n \n---invert-grep::\n+`--invert-grep`::\n \tLimit the commits output to ones with a log message that do not\n-\tmatch the pattern specified with `--grep=<pattern>`.\n+\tmatch the _<pattern>_ specified with `--grep=<pattern>`.\n \n--i::\n---regexp-ignore-case::\n+`-i`::\n+`--regexp-ignore-case`::\n \tMatch the regular expression limiting patterns without regard to letter\n \tcase.\n \n---basic-regexp::\n+`--basic-regexp`::\n \tConsider the limiting patterns to be basic regular expressions;\n \tthis is the default.\n \n--E::\n---extended-regexp::\n+`-E`::\n+`--extended-regexp`::\n \tConsider the limiting patterns to be extended regular expressions\n \tinstead of the default basic regular expressions.\n \n--F::\n---fixed-strings::\n+`-F`::\n+`--fixed-strings`::\n \tConsider the limiting patterns to be fixed strings (don't interpret\n \tpattern as a regular expression).\n \n--P::\n---perl-regexp::\n+`-P`::\n+`--perl-regexp`::\n \tConsider the limiting patterns to be Perl-compatible regular\n \texpressions.\n +\n@@ -103,20 +103,20 @@ Support for these types of regular expressions is an optional\n compile-time dependency. If Git wasn't compiled with support for them\n providing this option will cause it to die.\n \n---remove-empty::\n+`--remove-empty`::\n \tStop when a given path disappears from the tree.\n \n---merges::\n+`--merges`::\n \tPrint only merge commits. This is exactly the same as `--min-parents=2`.\n \n---no-merges::\n+`--no-merges`::\n \tDo not print commits with more than one parent. This is\n \texactly the same as `--max-parents=1`.\n \n---min-parents=<number>::\n---max-parents=<number>::\n---no-min-parents::\n---no-max-parents::\n+`--min-parents=<number>`::\n+`--max-parents=<number>`::\n+`--no-min-parents`::\n+`--no-max-parents`::\n \tShow only commits which have at least (or at most) that many parent\n \tcommits. In particular, `--max-parents=1` is the same as `--no-merges`,\n \t`--min-parents=2` is the same as `--merges`.  `--max-parents=0`\n@@ -126,7 +126,7 @@ providing this option will cause it to die.\n again.  Equivalent forms are `--min-parents=0` (any commit has 0 or more\n parents) and `--max-parents=-1` (negative numbers denote no upper limit).\n \n---first-parent::\n+`--first-parent`::\n \tWhen finding commits to include, follow only the first\n \tparent commit upon seeing a merge commit.  This option\n \tcan give a better overview when viewing the evolution of\n@@ -141,14 +141,14 @@ This option also changes default diff format for merge commits\n to `first-parent`, see `--diff-merges=first-parent` for details.\n endif::git-log[]\n \n---exclude-first-parent-only::\n+`--exclude-first-parent-only`::\n \tWhen finding commits to exclude (with a '{caret}'), follow only\n \tthe first parent commit upon seeing a merge commit.\n \tThis can be used to find the set of changes in a topic branch\n \tfrom the point where it diverged from the remote branch, given\n \tthat arbitrary merges can be valid topic branch changes.\n \n---not::\n+`--not`::\n \tReverses the meaning of the '{caret}' prefix (or lack thereof)\n \tfor all following revision specifiers, up to the next `--not`.\n \tWhen used on the command line before --stdin, the revisions passed\n@@ -156,37 +156,37 @@ endif::git-log[]\n \tvia standard input, the revisions passed on the command line will\n \tnot be affected by it.\n \n---all::\n+`--all`::\n \tPretend as if all the refs in `refs/`, along with `HEAD`, are\n-\tlisted on the command line as '<commit>'.\n+\tlisted on the command line as _<commit>_.\n \n---branches[=<pattern>]::\n+`--branches[=<pattern>]`::\n \tPretend as if all the refs in `refs/heads` are listed\n-\ton the command line as '<commit>'. If '<pattern>' is given, limit\n-\tbranches to ones matching given shell glob. If pattern lacks '?',\n+\ton the command line as _<commit>_. If _<pattern>_ is given, limit\n+\tbranches to ones matching given shell glob. If _<pattern>_ lacks '?',\n \t'{asterisk}', or '[', '/{asterisk}' at the end is implied.\n \n---tags[=<pattern>]::\n+`--tags[=<pattern>]`::\n \tPretend as if all the refs in `refs/tags` are listed\n-\ton the command line as '<commit>'. If '<pattern>' is given, limit\n+\ton the command line as _<commit>_. If _<pattern>_ is given, limit\n \ttags to ones matching given shell glob. If pattern lacks '?', '{asterisk}',\n \tor '[', '/{asterisk}' at the end is implied.\n \n---remotes[=<pattern>]::\n+`--remotes[=<pattern>]`::\n \tPretend as if all the refs in `refs/remotes` are listed\n-\ton the command line as '<commit>'. If '<pattern>' is given, limit\n+\ton the command line as _<commit>_. If _<pattern>_ is given, limit\n \tremote-tracking branches to ones matching given shell glob.\n \tIf pattern lacks '?', '{asterisk}', or '[', '/{asterisk}' at the end is implied.\n \n---glob=<glob-pattern>::\n-\tPretend as if all the refs matching shell glob '<glob-pattern>'\n-\tare listed on the command line as '<commit>'. Leading 'refs/',\n+`--glob=<glob-pattern>`::\n+\tPretend as if all the refs matching shell glob _<glob-pattern>_\n+\tare listed on the command line as _<commit>_. Leading 'refs/',\n \tis automatically prepended if missing. If pattern lacks '?', '{asterisk}',\n \tor '[', '/{asterisk}' at the end is implied.\n \n---exclude=<glob-pattern>::\n+`--exclude=<glob-pattern>`::\n \n-\tDo not include refs matching '<glob-pattern>' that the next `--all`,\n+\tDo not include refs matching _<glob-pattern>_ that the next `--all`,\n \t`--branches`, `--tags`, `--remotes`, or `--glob` would otherwise\n \tconsider. Repetitions of this option accumulate exclusion patterns\n \tup to the next `--all`, `--branches`, `--tags`, `--remotes`, or\n@@ -199,7 +199,7 @@ respectively, and they must begin with `refs/` when applied to `--glob`\n or `--all`. If a trailing '/{asterisk}' is intended, it must be given\n explicitly.\n \n---exclude-hidden=[fetch|receive|uploadpack]::\n+`--exclude-hidden=(fetch|receive|uploadpack)`::\n \tDo not include refs that would be hidden by `git-fetch`,\n \t`git-receive-pack` or `git-upload-pack` by consulting the appropriate\n \t`fetch.hideRefs`, `receive.hideRefs` or `uploadpack.hideRefs`\n@@ -207,11 +207,11 @@ explicitly.\n \tlinkgit:git-config[1]). This option affects the next pseudo-ref option\n \t`--all` or `--glob` and is cleared after processing them.\n \n---reflog::\n+`--reflog`::\n \tPretend as if all objects mentioned by reflogs are listed on the\n-\tcommand line as `<commit>`.\n+\tcommand line as _<commit>_.\n \n---alternate-refs::\n+`--alternate-refs`::\n \tPretend as if all objects mentioned as ref tips of alternate\n \trepositories were listed on the command line. An alternate\n \trepository is any repository whose object directory is specified\n@@ -219,7 +219,7 @@ explicitly.\n \tbe modified by `core.alternateRefsCommand`, etc. See\n \tlinkgit:git-config[1].\n \n---single-worktree::\n+`--single-worktree`::\n \tBy default, all working trees will be examined by the\n \tfollowing options when there are more than one (see\n \tlinkgit:git-worktree[1]): `--all`, `--reflog` and\n@@ -227,19 +227,19 @@ explicitly.\n \tThis option forces them to examine the current working tree\n \tonly.\n \n---ignore-missing::\n+`--ignore-missing`::\n \tUpon seeing an invalid object name in the input, pretend as if\n \tthe bad input was not given.\n \n ifndef::git-rev-list[]\n---bisect::\n+`--bisect`::\n \tPretend as if the bad bisection ref `refs/bisect/bad`\n \twas listed and as if it was followed by `--not` and the good\n \tbisection refs `refs/bisect/good-*` on the command\n \tline.\n endif::git-rev-list[]\n \n---stdin::\n+`--stdin`::\n \tIn addition to getting arguments from the command line, read\n \tthem from standard input as well. This accepts commits and\n \tpseudo-options like `--all` and `--glob=`. When a `--` separator\n@@ -249,15 +249,15 @@ endif::git-rev-list[]\n \tinfluence any subsequent command line arguments.\n \n ifdef::git-rev-list[]\n---quiet::\n+`--quiet`::\n \tDon't print anything to standard output.  This form\n \tis primarily meant to allow the caller to\n \ttest the exit status to see if a range of objects is fully\n \tconnected (or not).  It is faster than redirecting stdout\n \tto `/dev/null` as the output does not have to be formatted.\n \n---disk-usage::\n---disk-usage=human::\n+`--disk-usage`::\n+`--disk-usage=human`::\n \tSuppress normal output; instead, print the sum of the bytes used\n \tfor on-disk storage by the selected commits or objects. This is\n \tequivalent to piping the output into `git cat-file\n@@ -269,11 +269,11 @@ ifdef::git-rev-list[]\n \tin human-readable string(e.g. 12.24 Kib, 3.50 Mib).\n endif::git-rev-list[]\n \n---cherry-mark::\n+`--cherry-mark`::\n \tLike `--cherry-pick` (see below) but mark equivalent commits\n \twith `=` rather than omitting them, and inequivalent ones with `+`.\n \n---cherry-pick::\n+`--cherry-pick`::\n \tOmit any commit that introduces the same change as\n \tanother commit on the ``other side'' when the set of\n \tcommits are limited with symmetric difference.\n@@ -286,8 +286,8 @@ cherry-picked from the other branch (for example, ``3rd on b'' may be\n cherry-picked from branch A). With this option, such pairs of commits are\n excluded from the output.\n \n---left-only::\n---right-only::\n+`--left-only`::\n+`--right-only`::\n \tList only commits on the respective side of a symmetric difference,\n \ti.e. only those which would be marked `<` resp. `>` by\n \t`--left-right`.\n@@ -298,20 +298,20 @@ commits from `B` which are in `A` or are patch-equivalent to a commit in\n More precisely, `--cherry-pick --right-only --no-merges` gives the exact\n list.\n \n---cherry::\n+`--cherry`::\n \tA synonym for `--right-only --cherry-mark --no-merges`; useful to\n \tlimit the output to the commits on our side and mark those that\n \thave been applied to the other side of a forked history with\n \t`git log --cherry upstream...mybranch`, similar to\n \t`git cherry upstream mybranch`.\n \n--g::\n---walk-reflogs::\n+`-g`::\n+`--walk-reflogs`::\n \tInstead of walking the commit ancestry chain, walk\n \treflog entries from the most recent one to older ones.\n \tWhen this option is used you cannot specify commits to\n-\texclude (that is, '{caret}commit', 'commit1..commit2',\n-\tand 'commit1\\...commit2' notations cannot be used).\n+\texclude (that is, `^<commit>`, `<commit1>..<commit2>`,\n+\tand `<commit1>...<commit2>` notations cannot be used).\n +\n With `--pretty` format other than `oneline` and `reference` (for obvious reasons),\n this causes the output to have two extra lines of information\n@@ -340,29 +340,29 @@ See also linkgit:git-reflog[1].\n +\n Under `--pretty=reference`, this information will not be shown at all.\n \n---merge::\n+`--merge`::\n \tShow commits touching conflicted paths in the range `HEAD...<other>`,\n \twhere `<other>` is the first existing pseudoref in `MERGE_HEAD`,\n \t`CHERRY_PICK_HEAD`, `REVERT_HEAD` or `REBASE_HEAD`. Only works\n \twhen the index has unmerged entries. This option can be used to show\n \trelevant commits when resolving conflicts from a 3-way merge.\n \n---boundary::\n+`--boundary`::\n \tOutput excluded boundary commits. Boundary commits are\n \tprefixed with `-`.\n \n ifdef::git-rev-list[]\n---use-bitmap-index::\n+`--use-bitmap-index`::\n \n \tTry to speed up the traversal using the pack bitmap index (if\n \tone is available). Note that when traversing with `--objects`,\n \ttrees and blobs will not have their associated path printed.\n \n---progress=<header>::\n+`--progress=<header>`::\n \tShow progress reports on stderr as objects are considered. The\n \t`<header>` text will be printed with each progress update.\n \n--z::\n+`-z`::\n \tInstead of being newline-delimited, each outputted object and its\n \taccompanying metadata is delimited using NUL bytes. Output is printed\n \tin the following form:\n@@ -397,56 +397,56 @@ is how to do it, as there are various strategies to simplify the history.\n \n The following options select the commits to be shown:\n \n-<paths>::\n+`<paths>`::\n \tCommits modifying the given <paths> are selected.\n \n---simplify-by-decoration::\n+`--simplify-by-decoration`::\n \tCommits that are referred by some branch or tag are selected.\n \n Note that extra commits can be shown to give a meaningful history.\n \n The following options affect the way the simplification is performed:\n \n-Default mode::\n+`Default mode`::\n \tSimplifies the history to the simplest history explaining the\n \tfinal state of the tree. Simplest because it prunes some side\n \tbranches if the end result is the same (i.e. merging branches\n \twith the same content)\n \n---show-pulls::\n+`--show-pulls`::\n \tInclude all commits from the default mode, but also any merge\n \tcommits that are not TREESAME to the first parent but are\n \tTREESAME to a later parent. This mode is helpful for showing\n \tthe merge commits that \"first introduced\" a change to a branch.\n \n---full-history::\n+`--full-history`::\n \tSame as the default mode, but does not prune some history.\n \n---dense::\n+`--dense`::\n \tOnly the selected commits are shown, plus some to have a\n \tmeaningful history.\n \n---sparse::\n+`--sparse`::\n \tAll commits in the simplified history are shown.\n \n---simplify-merges::\n+`--simplify-merges`::\n \tAdditional option to `--full-history` to remove some needless\n \tmerges from the resulting history, as there are no selected\n \tcommits contributing to this merge.\n \n---ancestry-path[=<commit>]::\n-\tWhen given a range of commits to display (e.g. 'commit1..commit2'\n-\tor 'commit2 {caret}commit1'), and a commit <commit> in that range,\n+`--ancestry-path[=<commit>]`::\n+\tWhen given a range of commits to display (e.g. `<commit1>..<commit2>`\n+\tor `<commit2> ^<commit1>`), and a commit _<commit>_ in that range,\n \tonly display commits in that range\n-\tthat are ancestors of <commit>, descendants of <commit>, or\n-\t<commit> itself.  If no commit is specified, use 'commit1' (the\n-\texcluded part of the range) as <commit>.  Can be passed multiple\n+\tthat are ancestors of _<commit>_, descendants of _<commit>_, or\n+\t_<commit>_ itself.  If no commit is specified, use _<commit1>_ (the\n+\texcluded part of the range) as _<commit>_.  Can be passed multiple\n \ttimes; if so, a commit is included if it is any of the commits\n \tgiven or if it is an ancestor or descendant of one of them.\n \n A more detailed explanation follows.\n \n-Suppose you specified `foo` as the <paths>.  We shall call commits\n+Suppose you specified `foo` as the _<paths>_.  We shall call commits\n that modify `foo` !TREESAME, and the rest TREESAME.  (In a diff\n filtered for `foo`, they look different and equal, respectively.)\n \n@@ -466,22 +466,22 @@ The horizontal line of history A---Q is taken to be the first parent of\n each merge.  The commits are:\n \n * `I` is the initial commit, in which `foo` exists with contents\n-  ``asdf'', and a file `quux` exists with contents ``quux''. Initial\n+  `asdf`, and a file `quux` exists with contents `quux`. Initial\n   commits are compared to an empty tree, so `I` is !TREESAME.\n \n-* In `A`, `foo` contains just ``foo''.\n+* In `A`, `foo` contains just `foo`.\n \n * `B` contains the same change as `A`.  Its merge `M` is trivial and\n   hence TREESAME to all parents.\n \n-* `C` does not change `foo`, but its merge `N` changes it to ``foobar'',\n+* `C` does not change `foo`, but its merge `N` changes it to `foobar`,\n   so it is not TREESAME to any parent.\n \n-* `D` sets `foo` to ``baz''. Its merge `O` combines the strings from\n-  `N` and `D` to ``foobarbaz''; i.e., it is not TREESAME to any parent.\n+* `D` sets `foo` to `baz`. Its merge `O` combines the strings from\n+  `N` and `D` to `foobarbaz`; i.e., it is not TREESAME to any parent.\n \n-* `E` changes `quux` to ``xyzzy'', and its merge `P` combines the\n-  strings to ``quux xyzzy''. `P` is TREESAME to `O`, but not to `E`.\n+* `E` changes `quux` to `xyzzy`, and its merge `P` combines the\n+  strings to `quux xyzzy`. `P` is TREESAME to `O`, but not to `E`.\n \n * `X` is an independent root commit that added a new file `side`, and `Y`\n   modified it. `Y` is TREESAME to `X`. Its merge `Q` added `side` to `P`, and\n@@ -517,7 +517,7 @@ Parent/child relations are only visible with `--parents`, but that does\n not affect the commits selected in default mode, so we have shown the\n parent lines.\n \n---full-history without parent rewriting::\n+`--full-history` without parent rewriting::\n \tThis mode differs from the default in one point: always follow\n \tall parents of a merge, even if it is TREESAME to one of them.\n \tEven if more than one side of the merge has commits that are\n@@ -536,7 +536,7 @@ Note that without parent rewriting, it is not really possible to talk\n about the parent/child relationships between the commits, so we show\n them disconnected.\n \n---full-history with parent rewriting::\n+`--full-history` with parent rewriting::\n \tOrdinary commits are only included if they are !TREESAME\n \t(though this can be changed, see `--sparse` below).\n +\n@@ -560,18 +560,18 @@ rewritten to contain `E`'s parent `I`.  The same happened for `C` and\n In addition to the above settings, you can change whether TREESAME\n affects inclusion:\n \n---dense::\n+`--dense`::\n \tCommits that are walked are included if they are not TREESAME\n \tto any parent.\n \n---sparse::\n+`--sparse`::\n \tAll commits that are walked are included.\n +\n Note that without `--full-history`, this still simplifies merges: if\n one of the parents is TREESAME, we follow only that one, so the other\n sides of the merge are never walked.\n \n---simplify-merges::\n+`--simplify-merges`::\n \tFirst, build a history graph in the same way that\n \t`--full-history` with parent rewriting does (see above).\n +\n@@ -618,9 +618,9 @@ Note the major differences in `N`, `P`, and `Q` over `--full-history`:\n \n There is another simplification mode available:\n \n---ancestry-path[=<commit>]::\n+`--ancestry-path[=<commit>]`::\n \tLimit the displayed commits to those which are an ancestor of\n-\t<commit>, or which are a descendant of <commit>, or are <commit>\n+\t_<commit>_, or which are a descendant of _<commit>_, or are _<commit>_\n \titself.\n +\n As an example use case, consider the following commit history:\n@@ -636,15 +636,15 @@ As an example use case, consider the following commit history:\n A regular 'D..M' computes the set of commits that are ancestors of `M`,\n but excludes the ones that are ancestors of `D`. This is useful to see\n what happened to the history leading to `M` since `D`, in the sense\n-that ``what does `M` have that did not exist in `D`''. The result in this\n+that \"what does `M` have that did not exist in `D`\". The result in this\n example would be all the commits, except `A` and `B` (and `D` itself,\n of course).\n +\n When we want to find out what commits in `M` are contaminated with the\n bug introduced by `D` and need fixing, however, we might want to view\n-only the subset of 'D..M' that are actually descendants of `D`, i.e.\n+only the subset of `D..M` that are actually descendants of `D`, i.e.\n excluding `C` and `K`. This is exactly what the `--ancestry-path`\n-option does. Applied to the 'D..M' range, it results in:\n+option does. Applied to the `D..M` range, it results in:\n +\n -----------------------------------------------------------------------\n \t\tE-------F\n@@ -655,7 +655,7 @@ option does. Applied to the 'D..M' range, it results in:\n -----------------------------------------------------------------------\n +\n We can also use `--ancestry-path=D` instead of `--ancestry-path` which\n-means the same thing when applied to the 'D..M' range but is just more\n+means the same thing when applied to the `D..M` range but is just more\n explicit.\n +\n If we instead are interested in a given topic within this range, and all\n@@ -770,7 +770,7 @@ into the important branch. This commit may have information about why\n the change `X` came to override the changes from `A` and `B` in its\n commit message.\n \n---show-pulls::\n+`--show-pulls`::\n \tIn addition to the commits shown in the default history, show\n \teach merge commit that is not TREESAME to its first parent but\n \tis TREESAME to a later parent.\n@@ -819,7 +819,7 @@ ifdef::git-rev-list[]\n Bisection Helpers\n ~~~~~~~~~~~~~~~~~\n \n---bisect::\n+`--bisect`::\n \tLimit output to the one commit object which is roughly halfway between\n \tincluded and excluded commits. Note that the bad bisection ref\n \t`refs/bisect/bad` is added to the included commits (if it\n@@ -843,7 +843,7 @@ introduces a regression is thus reduced to a binary search: repeatedly\n generate and test new 'midpoint's until the commit chain is of length\n one.\n \n---bisect-vars::\n+`--bisect-vars`::\n \tThis calculates the same as `--bisect`, except that refs in\n \t`refs/bisect/` are not used, and except that this outputs\n \ttext ready to be eval'ed by the shell. These lines will assign the\n@@ -855,7 +855,7 @@ one.\n \t`bisect_bad`, and the number of commits we are bisecting right now to\n \t`bisect_all`.\n \n---bisect-all::\n+`--bisect-all`::\n \tThis outputs all the commit objects between the included and excluded\n \tcommits, ordered by their distance to the included and excluded\n \tcommits. Refs in `refs/bisect/` are not used. The farthest\n@@ -878,15 +878,15 @@ Commit Ordering\n \n By default, the commits are shown in reverse chronological order.\n \n---date-order::\n+`--date-order`::\n \tShow no parents before all of its children are shown, but\n \totherwise show commits in the commit timestamp order.\n \n---author-date-order::\n+`--author-date-order`::\n \tShow no parents before all of its children are shown, but\n \totherwise show commits in the author timestamp order.\n \n---topo-order::\n+`--topo-order`::\n \tShow no parents before all of its children are shown, and\n \tavoid showing commits on multiple lines of history\n \tintermixed.\n@@ -910,8 +910,8 @@ With `--topo-order`, they would show 8 6 5 3 7 4 2 1 (or 8 7 4 2 6 5\n avoid showing the commits from two parallel development track mixed\n together.\n \n---reverse::\n-\tOutput the commits chosen to be shown (see Commit Limiting\n+`--reverse`::\n+\tOutput the commits chosen to be shown (see 'Commit Limiting'\n \tsection above) in reverse order. Cannot be combined with\n \t`--walk-reflogs`.\n endif::git-shortlog[]\n@@ -923,39 +923,39 @@ Object Traversal\n These options are mostly targeted for packing of Git repositories.\n \n ifdef::git-rev-list[]\n---objects::\n+`--objects`::\n \tPrint the object IDs of any object referenced by the listed\n-\tcommits.  `--objects foo ^bar` thus means ``send me\n+\tcommits.  `--objects foo ^bar` thus means \"send me\n \tall object IDs which I need to download if I have the commit\n-\tobject _bar_ but not _foo_''. See also `--object-names` below.\n+\tobject `bar` but not `foo`\". See also `--object-names` below.\n \n---in-commit-order::\n+`--in-commit-order`::\n \tPrint tree and blob ids in order of the commits. The tree\n \tand blob ids are printed after they are first referenced\n \tby a commit.\n \n---objects-edge::\n+`--objects-edge`::\n \tSimilar to `--objects`, but also print the IDs of excluded\n-\tcommits prefixed with a ``-'' character.  This is used by\n+\tcommits prefixed with a \"`-`\" character.  This is used by\n \tlinkgit:git-pack-objects[1] to build a ``thin'' pack, which records\n \tobjects in deltified form based on objects contained in these\n \texcluded commits to reduce network traffic.\n \n---objects-edge-aggressive::\n+`--objects-edge-aggressive`::\n \tSimilar to `--objects-edge`, but it tries harder to find excluded\n \tcommits at the cost of increased time.  This is used instead of\n \t`--objects-edge` to build ``thin'' packs for shallow repositories.\n \n---indexed-objects::\n+`--indexed-objects`::\n \tPretend as if all trees and blobs used by the index are listed\n \ton the command line.  Note that you probably want to use\n \t`--objects`, too.\n \n---unpacked::\n+`--unpacked`::\n \tOnly useful with `--objects`; print the object IDs that are not\n \tin packs.\n \n---object-names::\n+`--object-names`::\n \tOnly useful with `--objects`; print the names of the object IDs\n \tthat are found. This is the default behavior. Note that the\n \t\"name\" of each object is ambiguous, and mostly intended as a\n@@ -964,52 +964,52 @@ ifdef::git-rev-list[]\n \tto remove newlines; and if an object would appear multiple times\n \twith different names, only one name is shown.\n \n---no-object-names::\n+`--no-object-names`::\n \tOnly useful with `--objects`; does not print the names of the object\n \tIDs that are found. This inverts `--object-names`. This flag allows\n \tthe output to be more easily parsed by commands such as\n \tlinkgit:git-cat-file[1].\n \n---filter=<filter-spec>::\n+`--filter=<filter-spec>`::\n \tOnly useful with one of the `--objects*`; omits objects (usually\n-\tblobs) from the list of printed objects.  The '<filter-spec>'\n+\tblobs) from the list of printed objects.  The _<filter-spec>_\n \tmay be one of the following:\n +\n-The form '--filter=blob:none' omits all blobs.\n+The form `--filter=blob:none` omits all blobs.\n +\n-The form '--filter=blob:limit=<n>[kmg]' omits blobs of size at least n\n-bytes or units.  n may be zero.  The suffixes k, m, and g can be used\n-to name units in KiB, MiB, or GiB.  For example, 'blob:limit=1k'\n+The form `--filter=blob:limit=<n>[kmg]` omits blobs of size at least _<n>_\n+bytes or units.  _<n>_ may be zero.  The suffixes `k`, `m`, and `g` can be used\n+to name units in KiB, MiB, or GiB.  For example, `blob:limit=1k`\n is the same as 'blob:limit=1024'.\n +\n-The form '--filter=object:type=(tag|commit|tree|blob)' omits all objects\n+The form `--filter=object:type=(tag|commit|tree|blob)` omits all objects\n which are not of the requested type.\n +\n-The form '--filter=sparse:oid=<blob-ish>' uses a sparse-checkout\n-specification contained in the blob (or blob-expression) '<blob-ish>'\n+The form `--filter=sparse:oid=<blob-ish>` uses a sparse-checkout\n+specification contained in the blob (or blob-expression) _<blob-ish>_\n to omit blobs that would not be required for a sparse checkout on\n the requested refs.\n +\n-The form '--filter=tree:<depth>' omits all blobs and trees whose depth\n-from the root tree is >= <depth> (minimum depth if an object is located\n-at multiple depths in the commits traversed). <depth>=0 will not include\n+The form `--filter=tree:<depth>` omits all blobs and trees whose depth\n+from the root tree is >= _<depth>_ (minimum depth if an object is located\n+at multiple depths in the commits traversed). _<depth>_=0 will not include\n any trees or blobs unless included explicitly in the command-line (or\n-standard input when --stdin is used). <depth>=1 will include only the\n+standard input when `--stdin` is used). _<depth>_=1 will include only the\n tree and blobs which are referenced directly by a commit reachable from\n-<commit> or an explicitly-given object. <depth>=2 is like <depth>=1\n+_<commit>_ or an explicitly-given object. _<depth>_=2 is like <depth>=1\n while also including trees and blobs one more level removed from an\n explicitly-given commit or tree.\n +\n-Note that the form '--filter=sparse:path=<path>' that wants to read\n+Note that the form `--filter=sparse:path=<path>` that wants to read\n from an arbitrary path on the filesystem has been dropped for security\n reasons.\n +\n-Multiple '--filter=' flags can be specified to combine filters. Only\n+Multiple `--filter=` flags can be specified to combine filters. Only\n objects which are accepted by every filter are included.\n +\n-The form '--filter=combine:<filter1>+<filter2>+...<filterN>' can also be\n+The form `--filter=combine:<filter1>+<filter2>+...<filterN>` can also be\n used to combined several filters, but this is harder than just repeating\n-the '--filter' flag and is usually not necessary. Filters are joined by\n+the `--filter` flag and is usually not necessary. Filters are joined by\n '{plus}' and individual filters are %-encoded (i.e. URL-encoded).\n Besides the '{plus}' and '%' characters, the following characters are\n reserved and also must be encoded: `~!@#$^&*()[]{}\\;\",<>?`+&#39;&#96;+\n@@ -1017,52 +1017,52 @@ as well as all characters with ASCII code &lt;= `0x20`, which includes\n space and newline.\n +\n Other arbitrary characters can also be encoded. For instance,\n-'combine:tree:3+blob:none' and 'combine:tree%3A3+blob%3Anone' are\n+`combine:tree:3+blob:none` and `combine:tree%3A3+blob%3Anone` are\n equivalent.\n \n---no-filter::\n+`--no-filter`::\n \tTurn off any previous `--filter=` argument.\n \n---filter-provided-objects::\n+`--filter-provided-objects`::\n \tFilter the list of explicitly provided objects, which would otherwise\n \talways be printed even if they did not match any of the filters. Only\n \tuseful with `--filter=`.\n \n---filter-print-omitted::\n+`--filter-print-omitted`::\n \tOnly useful with `--filter=`; prints a list of the objects omitted\n \tby the filter.  Object IDs are prefixed with a ``~'' character.\n \n---missing=<missing-action>::\n+`--missing=<missing-action>`::\n \tA debug option to help with future \"partial clone\" development.\n \tThis option specifies how missing objects are handled.\n +\n-The form '--missing=error' requests that rev-list stop with an error if\n+The form `--missing=error` requests that rev-list stop with an error if\n a missing object is encountered.  This is the default action.\n +\n-The form '--missing=allow-any' will allow object traversal to continue\n+The form `--missing=allow-any` will allow object traversal to continue\n if a missing object is encountered.  Missing objects will silently be\n omitted from the results.\n +\n-The form '--missing=allow-promisor' is like 'allow-any', but will only\n+The form `--missing=allow-promisor` is like `allow-any`, but will only\n allow object traversal to continue for EXPECTED promisor missing objects.\n Unexpected missing objects will raise an error.\n +\n-The form '--missing=print' is like 'allow-any', but will also print a\n+The form `--missing=print` is like `allow-any`, but will also print a\n list of the missing objects.  Object IDs are prefixed with a ``?'' character.\n +\n-The form '--missing=print-info' is like 'print', but will also print additional\n+The form `--missing=print-info` is like `print`, but will also print additional\n information about the missing object inferred from its containing object. The\n information is all printed on the same line with the missing object ID in the\n form: `?<oid> [<token>=<value>]...`. The `<token>=<value>` pairs containing\n-additional information are separated from each other by a SP. The value is\n-encoded in a token specific fashion, but SP or LF contained in value are always\n+additional information are separated from each other by a _SP_. The value is\n+encoded in a token specific fashion, but _SP_ or _LF_ contained in value are always\n expected to be represented in such a way that the resulting encoded value does\n not have either of these two problematic bytes. Each `<token>=<value>` may be\n one of the following:\n +\n --\n * The `path=<path>` shows the path of the missing object inferred from a\n-  containing object. A path containing SP or special characters is enclosed in\n+  containing object. A path containing _SP_ or special characters is enclosed in\n   double-quotes in the C style as needed.\n +\n * The `type=<type>` shows the type of the missing object inferred from a\n@@ -1073,7 +1073,7 @@ If some tips passed to the traversal are missing, they will be\n considered as missing too, and the traversal will ignore them. In case\n we cannot get their Object ID though, an error will be raised.\n \n---exclude-promisor-objects::\n+`--exclude-promisor-objects`::\n \t(For internal use only.)  Prefilter object traversal at\n \tpromisor boundary.  This is used with partial clone.  This is\n \tstronger than `--missing=allow-promisor` because it limits the\n@@ -1081,7 +1081,7 @@ we cannot get their Object ID though, an error will be raised.\n \tobjects.\n endif::git-rev-list[]\n \n---no-walk[=(sorted|unsorted)]::\n+`--no-walk[=(sorted|unsorted)]`::\n \tOnly show the given commits, but do not traverse their ancestors.\n \tThis has no effect if a range is specified. If the argument\n \t`unsorted` is given, the commits are shown in the order they were\n@@ -1090,7 +1090,7 @@ endif::git-rev-list[]\n \tby commit time.\n \tCannot be combined with `--graph`.\n \n---do-walk::\n+`--do-walk`::\n \tOverrides a previous `--no-walk`.\n endif::git-shortlog[]\n \n@@ -1106,10 +1106,10 @@ endif::git-rev-list[]\n \n include::pretty-options.adoc[]\n \n---relative-date::\n+`--relative-date`::\n \tSynonym for `--date=relative`.\n \n---date=<format>::\n+`--date=<format>`::\n \tOnly takes effect for dates shown in human-readable format, such\n \tas when using `--pretty`. `log.date` config variable sets a default\n \tvalue for the log command's `--date` option. By default, dates\n@@ -1159,12 +1159,12 @@ omitted.\n 1970).  As with `--raw`, this is always in UTC and therefore `-local`\n has no effect.\n \n-`--date=format:...` feeds the format `...` to your system `strftime`,\n-except for %s, %z, and %Z, which are handled internally.\n+`--date=format:<format>` feeds the _<format>_ to your system `strftime`,\n+except for `%s`, `%z`, and `%Z`, which are handled internally.\n Use `--date=format:%c` to show the date in your system locale's\n-preferred format.  See the `strftime` manual for a complete list of\n+preferred format.  See the `strftime`(3) manual for a complete list of\n format placeholders. When using `-local`, the correct syntax is\n-`--date=format-local:...`.\n+`--date=format-local:<format>`.\n \n `--date=default` is the default format, and is based on ctime(3)\n output.  It shows a single line with three-letter day of the week,\n@@ -1174,33 +1174,33 @@ the local time zone is used, e.g. `Thu Jan 1 00:00:00 1970 +0000`.\n --\n \n ifdef::git-rev-list[]\n---header::\n+`--header`::\n \tPrint the contents of the commit in raw-format; each record is\n \tseparated with a NUL character.\n \n---no-commit-header::\n+`--no-commit-header`::\n \tSuppress the header line containing \"commit\" and the object ID printed before\n \tthe specified format.  This has no effect on the built-in formats; only custom\n \tformats are affected.\n \n---commit-header::\n+`--commit-header`::\n \tOverrides a previous `--no-commit-header`.\n endif::git-rev-list[]\n \n---parents::\n+`--parents`::\n \tPrint also the parents of the commit (in the form \"commit parent...\").\n \tAlso enables parent rewriting, see 'History Simplification' above.\n \n---children::\n+`--children`::\n \tPrint also the children of the commit (in the form \"commit child...\").\n \tAlso enables parent rewriting, see 'History Simplification' above.\n \n ifdef::git-rev-list[]\n---timestamp::\n+`--timestamp`::\n \tPrint the raw commit timestamp.\n endif::git-rev-list[]\n \n---left-right::\n+`--left-right`::\n \tMark which side of a symmetric difference a commit is reachable from.\n \tCommits from the left side are prefixed with `<` and those from\n \tthe right with `>`.  If combined with `--boundary`, those\n@@ -1229,7 +1229,7 @@ you would get an output like this:\n \t-xxxxxxx... 1st on a\n -----------------------------------------------------------------------\n \n---graph::\n+`--graph`::\n \tDraw a text-based graphical representation of the commit history\n \ton the left hand side of the output.  This may cause extra lines\n \tto be printed in between commits, in order for the graph history\n@@ -1241,15 +1241,15 @@ This enables parent rewriting, see 'History Simplification' above.\n This implies the `--topo-order` option by default, but the\n `--date-order` option may also be specified.\n \n---show-linear-break[=<barrier>]::\n-\tWhen --graph is not used, all history branches are flattened\n+`--show-linear-break[=<barrier>]`::\n+\tWhen `--graph` is not used, all history branches are flattened\n \twhich can make it hard to see that the two consecutive commits\n \tdo not belong to a linear branch. This option puts a barrier\n-\tin between them in that case. If `<barrier>` is specified, it\n+\tin between them in that case. If _<barrier>_ is specified, it\n \tis the string that will be shown instead of the default one.\n \n ifdef::git-rev-list[]\n---count::\n+`--count`::\n \tPrint a number stating how many commits would have been\n \tlisted, and suppress all other output.  When used together\n \twith `--left-right`, instead print the counts for left and\n-- \ngitgitgadget\n\n"},{"id":"519918","messageId":"9f9ce432bd6e50b9bbf1e16e2f55dbd730f72514.1749373787.git.gitgitgadget@gmail.com","threadId":"63603","inReplyTo":"pull.1933.git.1749373787.gitgitgadget@gmail.com","subject":"[PATCH 8/9] doc: git-log: convert diff options to new doc format","fromName":"Jean-Noël Avila via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2025-06-08T09:09:45Z","receivedAt":"2025-06-08T09:09:56Z","isPatch":true,"sender":{"key":"jn.avila@free.fr","avatar":"https://avatars.githubusercontent.com/u/156172?v=4"},"body":"From: =?UTF-8?q?Jean-No=C3=ABl=20Avila?= <jn.avila@free.fr>\n\n- Use `backticks` for keywords and more complex option\ndescriptions. The new rendering engine will apply synopsis rules to\nthese spans.\n- In description lists, put each option on its own line, to make them more\nsearchable and enable automatic translation of the options.\n\nSigned-off-by: Jean-Noël Avila <jn.avila@free.fr>\n---\n Documentation/diff-options.adoc | 40 +++++++++++++++++++--------------\n 1 file changed, 23 insertions(+), 17 deletions(-)\n\ndiff --git a/Documentation/diff-options.adoc b/Documentation/diff-options.adoc\nindex 640eb6e7db58..f3a35d81411f 100644\n--- a/Documentation/diff-options.adoc\n+++ b/Documentation/diff-options.adoc\n@@ -37,32 +37,32 @@ endif::git-diff[]\n endif::git-format-patch[]\n \n ifdef::git-log[]\n--m::\n+`-m`::\n \tShow diffs for merge commits in the default format. This is\n \tsimilar to `--diff-merges=on`, except `-m` will\n \tproduce no output unless `-p` is given as well.\n \n--c::\n+`-c`::\n \tProduce combined diff output for merge commits.\n \tShortcut for `--diff-merges=combined -p`.\n \n---cc::\n+`--cc`::\n \tProduce dense combined diff output for merge commits.\n \tShortcut for `--diff-merges=dense-combined -p`.\n \n---dd::\n+`--dd`::\n \tProduce diff with respect to first parent for both merge and\n \tregular commits.\n \tShortcut for `--diff-merges=first-parent -p`.\n \n---remerge-diff::\n+`--remerge-diff`::\n \tProduce remerge-diff output for merge commits.\n \tShortcut for `--diff-merges=remerge -p`.\n \n---no-diff-merges::\n+`--no-diff-merges`::\n \tSynonym for `--diff-merges=off`.\n \n---diff-merges=<format>::\n+`--diff-merges=<format>`::\n \tSpecify diff format to be used for merge commits. Default is\n \t{diff-merges-default} unless `--first-parent` is in use, in\n \twhich case `first-parent` is the default.\n@@ -70,48 +70,54 @@ ifdef::git-log[]\n The following formats are supported:\n +\n --\n-off, none::\n+`off`::\n+`none`::\n \tDisable output of diffs for merge commits. Useful to override\n \timplied value.\n \n-on, m::\n+`on`::\n+`m`::\n \tMake diff output for merge commits to be shown in the default\n \tformat. The default format can be changed using\n \t`log.diffMerges` configuration variable, whose default value\n \tis `separate`.\n \n-first-parent, 1::\n+`first-parent`::\n+`1`::\n \tShow full diff with respect to first parent. This is the same\n \tformat as `--patch` produces for non-merge commits.\n \n-separate::\n+`separate`::\n \tShow full diff with respect to each of parents.\n \tSeparate log entry and diff is generated for each parent.\n \n-combined, c::\n+`combined`::\n+`c`::\n \tShow differences from each of the parents to the merge\n \tresult simultaneously instead of showing pairwise diff between\n \ta parent and the result one at a time. Furthermore, it lists\n \tonly files which were modified from all parents.\n \n-dense-combined, cc::\n+`dense-combined`::\n+`cc`::\n \tFurther compress output produced by `--diff-merges=combined`\n \tby omitting uninteresting hunks whose contents in the parents\n \thave only two variants and the merge result picks one of them\n \twithout modification.\n \n-remerge, r::\n-\tRemerge two-parent merge commits to create a temporary tree\n+`remerge`::\n+`r`:: Remerge two-parent merge commits to create a temporary tree\n \tobject--potentially containing files with conflict markers\n \tand such.  A diff is then shown between that temporary tree\n \tand the actual merge commit.\n+--\n +\n The output emitted when this option is used is subject to change, and\n so is its interaction with other options (unless explicitly\n documented).\n---\n \n---combined-all-paths::\n+\n+`--combined-all-paths`::\n \tCause combined diffs (used for merge commits) to\n \tlist the name of the file from all parents.  It thus only has\n \teffect when `--diff-merges=[dense-]combined` is in use, and\n-- \ngitgitgadget\n\n"},{"id":"519920","messageId":"d54e297567ac8f3009daa8fdf3de158338b2b700.1749373787.git.gitgitgadget@gmail.com","threadId":"63603","inReplyTo":"pull.1933.git.1749373787.gitgitgadget@gmail.com","subject":"[PATCH 7/9] doc: git-log: convert pretty formats to new doc format","fromName":"Jean-Noël Avila via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2025-06-08T09:09:44Z","receivedAt":"2025-06-08T09:09:56Z","isPatch":true,"sender":{"key":"jn.avila@free.fr","avatar":"https://avatars.githubusercontent.com/u/156172?v=4"},"body":"From: =?UTF-8?q?Jean-No=C3=ABl=20Avila?= <jn.avila@free.fr>\n\n- Use _<placeholder>_ instead of <placeholder> in the description\n- Use `backticks` for keywords and more complex option\ndescriptions. The new rendering engine will apply synopsis rules to\nthese spans.\n\nFor all the formats in the form of %(foo), the formatting needs to be\nheavier because we not want the parentheses to be rendered as syntax\nelements,but as keywords, i.e. we need to circumvent the syntax highlighting\nof synopsis.  In this particular case, this requires the heavy escaping of\nthe parts that contain parentheses with ++.\n\nSigned-off-by: Jean-Noël Avila <jn.avila@free.fr>\n---\n Documentation/pretty-formats.adoc | 283 +++++++++++++++---------------\n 1 file changed, 143 insertions(+), 140 deletions(-)\n\ndiff --git a/Documentation/pretty-formats.adoc b/Documentation/pretty-formats.adoc\nindex 07475de8c337..9ed0417fc811 100644\n--- a/Documentation/pretty-formats.adoc\n+++ b/Documentation/pretty-formats.adoc\n@@ -2,11 +2,11 @@ PRETTY FORMATS\n --------------\n \n If the commit is a merge, and if the pretty-format\n-is not 'oneline', 'email' or 'raw', an additional line is\n-inserted before the 'Author:' line.  This line begins with\n+is not `oneline`, `email` or `raw`, an additional line is\n+inserted before the `Author:` line.  This line begins with\n \"Merge: \" and the hashes of ancestral commits are printed,\n separated by spaces.  Note that the listed commits may not\n-necessarily be the list of the *direct* parent commits if you\n+necessarily be the list of the 'direct' parent commits if you\n have limited your view of history: for example, if you are\n only interested in changes related to a certain directory or\n file.\n@@ -14,24 +14,24 @@ file.\n There are several built-in formats, and you can define\n additional formats by setting a pretty.<name>\n config option to either another format name, or a\n-'format:' string, as described below (see\n+`format:` string, as described below (see\n linkgit:git-config[1]). Here are the details of the\n built-in formats:\n \n-* 'oneline'\n+* `oneline`\n \n \t  <hash> <title-line>\n +\n This is designed to be as compact as possible.\n \n-* 'short'\n+* `short`\n \n \t  commit <hash>\n \t  Author: <author>\n \n \t      <title-line>\n \n-* 'medium'\n+* `medium`\n \n \t  commit <hash>\n \t  Author: <author>\n@@ -41,7 +41,7 @@ This is designed to be as compact as possible.\n \n \t      <full-commit-message>\n \n-* 'full'\n+* `full`\n \n \t  commit <hash>\n \t  Author: <author>\n@@ -51,7 +51,7 @@ This is designed to be as compact as possible.\n \n \t      <full-commit-message>\n \n-* 'fuller'\n+* `fuller`\n \n \t  commit <hash>\n \t  Author:     <author>\n@@ -63,18 +63,18 @@ This is designed to be as compact as possible.\n \n \t       <full-commit-message>\n \n-* 'reference'\n+* `reference`\n \n \t  <abbrev-hash> (<title-line>, <short-author-date>)\n +\n This format is used to refer to another commit in a commit message and\n-is the same as `--pretty='format:%C(auto)%h (%s, %ad)'`.  By default,\n+is the same as ++--pretty=\\'format:%C(auto)%h (%s, %ad)'++.  By default,\n the date is formatted with `--date=short` unless another `--date` option\n is explicitly specified.  As with any `format:` with format\n placeholders, its output is not affected by other options like\n `--decorate` and `--walk-reflogs`.\n \n-* 'email'\n+* `email`\n \n \t  From <hash> <date>\n \t  From: <author>\n@@ -83,30 +83,30 @@ placeholders, its output is not affected by other options like\n \n \t  <full-commit-message>\n \n-* 'mboxrd'\n+* `mboxrd`\n +\n-Like 'email', but lines in the commit message starting with \"From \"\n+Like `email`, but lines in the commit message starting with \"From \"\n (preceded by zero or more \">\") are quoted with \">\" so they aren't\n confused as starting a new commit.\n \n-* 'raw'\n+* `raw`\n +\n-The 'raw' format shows the entire commit exactly as\n+The `raw` format shows the entire commit exactly as\n stored in the commit object.  Notably, the hashes are\n-displayed in full, regardless of whether --abbrev or\n---no-abbrev are used, and 'parents' information show the\n+displayed in full, regardless of whether `--abbrev` or\n+`--no-abbrev` are used, and 'parents' information show the\n true parent commits, without taking grafts or history\n simplification into account. Note that this format affects the way\n commits are displayed, but not the way the diff is shown e.g. with\n `git log --raw`. To get full object names in a raw diff format,\n use `--no-abbrev`.\n \n-* 'format:<format-string>'\n+* `format:<format-string>`\n +\n-The 'format:<format-string>' format allows you to specify which information\n+The `format:<format-string>` format allows you to specify which information\n you want to show. It works a little bit like printf format,\n-with the notable exception that you get a newline with '%n'\n-instead of '\\n'.\n+with the notable exception that you get a newline with `%n`\n+instead of `\\n`.\n +\n E.g, 'format:\"The author of %h was %an, %ar%nThe title was >>%s<<%n\"'\n would show something like this:\n@@ -120,158 +120,161 @@ The title was >>t4119: test autocomputing -p<n> for traditional diff input.<<\n The placeholders are:\n \n - Placeholders that expand to a single literal character:\n-'%n':: newline\n-'%%':: a raw '%'\n-'%x00':: '%x' followed by two hexadecimal digits is replaced with a\n+++%n++:: newline\n+++%%++:: a raw ++%++\n+++%x00++:: ++%x++ followed by two hexadecimal digits is replaced with a\n \t byte with the hexadecimal digits' value (we will call this\n \t \"literal formatting code\" in the rest of this document).\n \n - Placeholders that affect formatting of later placeholders:\n-'%Cred':: switch color to red\n-'%Cgreen':: switch color to green\n-'%Cblue':: switch color to blue\n-'%Creset':: reset color\n-'%C(...)':: color specification, as described under Values in the\n+++%Cred++:: switch color to red\n+++%Cgreen++:: switch color to green\n+++%Cblue++:: switch color to blue\n+++%Creset++:: reset color\n+++%C(++_<spec>_++)++:: color specification, as described under Values in the\n \t    \"CONFIGURATION FILE\" section of linkgit:git-config[1].  By\n \t    default, colors are shown only when enabled for log output\n \t    (by `color.diff`, `color.ui`, or `--color`, and respecting\n \t    the `auto` settings of the former if we are going to a\n-\t    terminal). `%C(auto,...)` is accepted as a historical\n-\t    synonym for the default (e.g., `%C(auto,red)`). Specifying\n-\t    `%C(always,...)` will show the colors even when color is\n+\t    terminal). ++%C(auto,++_<spec>_++)++ is accepted as a historical\n+\t    synonym for the default (e.g., ++%C(auto,red)++). Specifying\n+\t    ++%C(always,++_<spec>_++)++ will show the colors even when color is\n \t    not otherwise enabled (though consider just using\n-\t    `--color=always` to enable color for the whole output,\n+\t    `--color=always` to enable color for the  whole output,\n \t    including this format and anything else git might color).\n-\t    `auto` alone (i.e. `%C(auto)`) will turn on auto coloring\n+\t    `auto` alone (i.e. ++%C(auto)++) will turn on auto coloring\n \t    on the next placeholders until the color is switched\n \t    again.\n-'%m':: left (`<`), right (`>`) or boundary (`-`) mark\n-'%w([<w>[,<i1>[,<i2>]]])':: switch line wrapping, like the -w option of\n+++%m++:: left (`<`), right (`>`) or boundary (`-`) mark\n+++%w(++`[<w>[,<i1>[,<i2>]]]`++)++:: switch line wrapping, like the `-w` option of\n \t\t\t    linkgit:git-shortlog[1].\n-'%<( <N> [,trunc|ltrunc|mtrunc])':: make the next placeholder take at\n+++%<(++`<n>[,(trunc|ltrunc|mtrunc)]`++)++:: make the next placeholder take at\n \t\t\t\t  least N column widths, padding spaces on\n \t\t\t\t  the right if necessary.  Optionally\n-\t\t\t\t  truncate (with ellipsis '..') at the left (ltrunc) `..ft`,\n+\t\t\t\t  truncate (with ellipsis `..`) at the left (ltrunc) `..ft`,\n \t\t\t\t  the middle (mtrunc) `mi..le`, or the end\n \t\t\t\t  (trunc) `rig..`, if the output is longer than\n-\t\t\t\t  N columns.\n+\t\t\t\t  _<n>_ columns.\n \t\t\t\t  Note 1: that truncating\n-\t\t\t\t  only works correctly with N >= 2.\n-\t\t\t\t  Note 2: spaces around the N and M (see below)\n+\t\t\t\t  only works correctly with _<n>_ >= 2.\n+\t\t\t\t  Note 2: spaces around the _<n>_ and _<m>_ (see below)\n \t\t\t\t  values are optional.\n \t\t\t\t  Note 3: Emojis and other wide characters\n \t\t\t\t  will take two display columns, which may\n \t\t\t\t  over-run column boundaries.\n \t\t\t\t  Note 4: decomposed character combining marks\n \t\t\t\t  may be misplaced at padding boundaries.\n-'%<|( <M> )':: make the next placeholder take at least until Mth\n+++%<|(++_<m>_ ++)++:: make the next placeholder take at least until _<m>_ th\n \t     display column, padding spaces on the right if necessary.\n-\t     Use negative M values for column positions measured\n+\t     Use negative _<m>_ values for column positions measured\n \t     from the right hand edge of the terminal window.\n-'%>( <N> )', '%>|( <M> )':: similar to '%<( <N> )', '%<|( <M> )' respectively,\n+++%>(++_<n>_++)++::\n+++%>|(++_<m>_++)++:: similar to ++%<(++_<n>_++)++, ++%<|(++_<m>_++)++ respectively,\n \t\t\tbut padding spaces on the left\n-'%>>( <N> )', '%>>|( <M> )':: similar to '%>( <N> )', '%>|( <M> )'\n+++%>>(++_<n>_++)++::\n+++%>>|(++_<m>_++)++:: similar to ++%>(++_<n>_++)++, ++%>|(++_<m>_++)++\n \t\t\t  respectively, except that if the next\n \t\t\t  placeholder takes more spaces than given and\n \t\t\t  there are spaces on its left, use those\n \t\t\t  spaces\n-'%><( <N> )', '%><|( <M> )':: similar to '%<( <N> )', '%<|( <M> )'\n+++%><(++_<n>_++)++::\n+++%><|(++_<m>_++)++:: similar to ++%<(++_<n>_++)++, ++%<|(++_<m>_++)++\n \t\t\t  respectively, but padding both sides\n \t\t\t  (i.e. the text is centered)\n \n - Placeholders that expand to information extracted from the commit:\n-'%H':: commit hash\n-'%h':: abbreviated commit hash\n-'%T':: tree hash\n-'%t':: abbreviated tree hash\n-'%P':: parent hashes\n-'%p':: abbreviated parent hashes\n-'%an':: author name\n-'%aN':: author name (respecting .mailmap, see linkgit:git-shortlog[1]\n++%H+:: commit hash\n++%h+:: abbreviated commit hash\n++%T+:: tree hash\n++%t+:: abbreviated tree hash\n++%P+:: parent hashes\n++%p+:: abbreviated parent hashes\n++%an+:: author name\n++%aN+:: author name (respecting .mailmap, see linkgit:git-shortlog[1]\n \tor linkgit:git-blame[1])\n-'%ae':: author email\n-'%aE':: author email (respecting .mailmap, see linkgit:git-shortlog[1]\n++%ae+:: author email\n++%aE+:: author email (respecting .mailmap, see linkgit:git-shortlog[1]\n \tor linkgit:git-blame[1])\n-'%al':: author email local-part (the part before the '@' sign)\n-'%aL':: author local-part (see '%al') respecting .mailmap, see\n++%al+:: author email local-part (the part before the `@` sign)\n++%aL+:: author local-part (see +%al+) respecting .mailmap, see\n \tlinkgit:git-shortlog[1] or linkgit:git-blame[1])\n-'%ad':: author date (format respects --date= option)\n-'%aD':: author date, RFC2822 style\n-'%ar':: author date, relative\n-'%at':: author date, UNIX timestamp\n-'%ai':: author date, ISO 8601-like format\n-'%aI':: author date, strict ISO 8601 format\n-'%as':: author date, short format (`YYYY-MM-DD`)\n-'%ah':: author date, human style (like the `--date=human` option of\n++%ad+:: author date (format respects --date= option)\n++%aD+:: author date, RFC2822 style\n++%ar+:: author date, relative\n++%at+:: author date, UNIX timestamp\n++%ai+:: author date, ISO 8601-like format\n++%aI+:: author date, strict ISO 8601 format\n++%as+:: author date, short format (`YYYY-MM-DD`)\n++%ah+:: author date, human style (like the `--date=human` option of\n \tlinkgit:git-rev-list[1])\n-'%cn':: committer name\n-'%cN':: committer name (respecting .mailmap, see\n++%cn+:: committer name\n++%cN+:: committer name (respecting .mailmap, see\n \tlinkgit:git-shortlog[1] or linkgit:git-blame[1])\n-'%ce':: committer email\n-'%cE':: committer email (respecting .mailmap, see\n++%ce+:: committer email\n++%cE+:: committer email (respecting .mailmap, see\n \tlinkgit:git-shortlog[1] or linkgit:git-blame[1])\n-'%cl':: committer email local-part (the part before the '@' sign)\n-'%cL':: committer local-part (see '%cl') respecting .mailmap, see\n++%cl+:: committer email local-part (the part before the `@` sign)\n++%cL+:: committer local-part (see +%cl+) respecting .mailmap, see\n \tlinkgit:git-shortlog[1] or linkgit:git-blame[1])\n-'%cd':: committer date (format respects --date= option)\n-'%cD':: committer date, RFC2822 style\n-'%cr':: committer date, relative\n-'%ct':: committer date, UNIX timestamp\n-'%ci':: committer date, ISO 8601-like format\n-'%cI':: committer date, strict ISO 8601 format\n-'%cs':: committer date, short format (`YYYY-MM-DD`)\n-'%ch':: committer date, human style (like the `--date=human` option of\n++%cd+:: committer date (format respects --date= option)\n++%cD+:: committer date, RFC2822 style\n++%cr+:: committer date, relative\n++%ct+:: committer date, UNIX timestamp\n++%ci+:: committer date, ISO 8601-like format\n++%cI+:: committer date, strict ISO 8601 format\n++%cs+:: committer date, short format (`YYYY-MM-DD`)\n++%ch+:: committer date, human style (like the `--date=human` option of\n \tlinkgit:git-rev-list[1])\n-'%d':: ref names, like the --decorate option of linkgit:git-log[1]\n-'%D':: ref names without the \" (\", \")\" wrapping.\n-'%(decorate[:<options>])'::\n++%d+:: ref names, like the --decorate option of linkgit:git-log[1]\n++%D+:: ref names without the \" (\", \")\" wrapping.\n+++%(decorate++`[:<option>,...]`++)++::\n ref names with custom decorations. The `decorate` string may be followed by a\n colon and zero or more comma-separated options. Option values may contain\n literal formatting codes. These must be used for commas (`%x2C`) and closing\n parentheses (`%x29`), due to their role in the option syntax.\n +\n-** 'prefix=<value>': Shown before the list of ref names.  Defaults to \"{nbsp}`(`\".\n-** 'suffix=<value>': Shown after the list of ref names.  Defaults to \"`)`\".\n-** 'separator=<value>': Shown between ref names.  Defaults to \"`,`{nbsp}\".\n-** 'pointer=<value>': Shown between HEAD and the branch it points to, if any.\n-\t\t      Defaults to \"{nbsp}`->`{nbsp}\".\n-** 'tag=<value>': Shown before tag names. Defaults to \"`tag:`{nbsp}\".\n+** `prefix=<value>`: Shown before the list of ref names.  Defaults to \"{nbsp}+(+\".\n+** `suffix=<value>`: Shown after the list of ref names.  Defaults to \"+)+\".\n+** `separator=<value>`: Shown between ref names.  Defaults to \"+,+{nbsp}\".\n+** `pointer=<value>`: Shown between HEAD and the branch it points to, if any.\n+\t\t      Defaults to \"{nbsp}+->+{nbsp}\".\n+** `tag=<value>`: Shown before tag names. Defaults to \"`tag:`{nbsp}\".\n \n +\n For example, to produce decorations with no wrapping\n or tag annotations, and spaces as separators:\n +\n-`%(decorate:prefix=,suffix=,tag=,separator= )`\n+++%(decorate:prefix=,suffix=,tag=,separator= )++\n \n-'%(describe[:<options>])'::\n+++%(describe++`[:<option>,...]`++)++::\n human-readable name, like linkgit:git-describe[1]; empty string for\n undescribable commits.  The `describe` string may be followed by a colon and\n zero or more comma-separated options.  Descriptions can be inconsistent when\n tags are added or removed at the same time.\n +\n-** 'tags[=<bool-value>]': Instead of only considering annotated tags,\n+** `tags[=<bool-value>]`: Instead of only considering annotated tags,\n    consider lightweight tags as well.\n-** 'abbrev=<number>': Instead of using the default number of hexadecimal digits\n+** `abbrev=<number>`: Instead of using the default number of hexadecimal digits\n    (which will vary according to the number of objects in the repository with a\n    default of 7) of the abbreviated object name, use <number> digits, or as many\n    digits as needed to form a unique object name.\n-** 'match=<pattern>': Only consider tags matching the given\n-   `glob(7)` pattern, excluding the \"refs/tags/\" prefix.\n-** 'exclude=<pattern>': Do not consider tags matching the given\n-   `glob(7)` pattern, excluding the \"refs/tags/\" prefix.\n+** `match=<pattern>`: Only consider tags matching the given\n+   `glob(7)` _<pattern>_, excluding the `refs/tags/` prefix.\n+** `exclude=<pattern>`: Do not consider tags matching the given\n+   `glob(7)` _<pattern>_, excluding the `refs/tags/` prefix.\n \n-'%S':: ref name given on the command line by which the commit was reached\n++%S+:: ref name given on the command line by which the commit was reached\n        (like `git log --source`), only works with `git log`\n-'%e':: encoding\n-'%s':: subject\n-'%f':: sanitized subject line, suitable for a filename\n-'%b':: body\n-'%B':: raw body (unwrapped subject and body)\n++%e+:: encoding\n++%s+:: subject\n++%f+:: sanitized subject line, suitable for a filename\n++%b+:: body\n++%B+:: raw body (unwrapped subject and body)\n ifndef::git-rev-list[]\n-'%N':: commit notes\n++%N+:: commit notes\n endif::git-rev-list[]\n-'%GG':: raw verification message from GPG for a signed commit\n-'%G?':: show \"G\" for a good (valid) signature,\n++%GG+:: raw verification message from GPG for a signed commit\n++%G?+:: show \"G\" for a good (valid) signature,\n \t\"B\" for a bad signature,\n \t\"U\" for a good signature with unknown validity,\n \t\"X\" for a good signature that has expired,\n@@ -279,86 +282,86 @@ endif::git-rev-list[]\n \t\"R\" for a good signature made by a revoked key,\n \t\"E\" if the signature cannot be checked (e.g. missing key)\n \tand \"N\" for no signature\n-'%GS':: show the name of the signer for a signed commit\n-'%GK':: show the key used to sign a signed commit\n-'%GF':: show the fingerprint of the key used to sign a signed commit\n-'%GP':: show the fingerprint of the primary key whose subkey was used\n++%GS+:: show the name of the signer for a signed commit\n++%GK+:: show the key used to sign a signed commit\n++%GF+:: show the fingerprint of the key used to sign a signed commit\n++%GP+:: show the fingerprint of the primary key whose subkey was used\n \tto sign a signed commit\n-'%GT':: show the trust level for the key used to sign a signed commit\n-'%gD':: reflog selector, e.g., `refs/stash@{1}` or `refs/stash@{2\n++%GT+:: show the trust level for the key used to sign a signed commit\n++%gD+:: reflog selector, e.g., `refs/stash@{1}` or `refs/stash@{2\n \tminutes ago}`; the format follows the rules described for the\n \t`-g` option. The portion before the `@` is the refname as\n \tgiven on the command line (so `git log -g refs/heads/master`\n \twould yield `refs/heads/master@{0}`).\n-'%gd':: shortened reflog selector; same as `%gD`, but the refname\n++%gd+:: shortened reflog selector; same as `%gD`, but the refname\n \tportion is shortened for human readability (so\n \t`refs/heads/master` becomes just `master`).\n-'%gn':: reflog identity name\n-'%gN':: reflog identity name (respecting .mailmap, see\n++%gn+:: reflog identity name\n++%gN+:: reflog identity name (respecting .mailmap, see\n \tlinkgit:git-shortlog[1] or linkgit:git-blame[1])\n-'%ge':: reflog identity email\n-'%gE':: reflog identity email (respecting .mailmap, see\n++%ge+:: reflog identity email\n++%gE+:: reflog identity email (respecting .mailmap, see\n \tlinkgit:git-shortlog[1] or linkgit:git-blame[1])\n-'%gs':: reflog subject\n-'%(trailers[:<options>])'::\n++%gs+:: reflog subject\n+++%(trailers++`[:<option>,...]`++)++::\n display the trailers of the body as interpreted by\n linkgit:git-interpret-trailers[1]. The `trailers` string may be followed by\n a colon and zero or more comma-separated options. If any option is provided\n multiple times, the last occurrence wins.\n +\n-** 'key=<key>': only show trailers with specified <key>. Matching is done\n+** `key=<key>`: only show trailers with specified <key>. Matching is done\n    case-insensitively and trailing colon is optional. If option is\n    given multiple times trailer lines matching any of the keys are\n    shown. This option automatically enables the `only` option so that\n    non-trailer lines in the trailer block are hidden. If that is not\n    desired it can be disabled with `only=false`.  E.g.,\n-   `%(trailers:key=Reviewed-by)` shows trailer lines with key\n+   +%(trailers:key=Reviewed-by)+ shows trailer lines with key\n    `Reviewed-by`.\n-** 'only[=<bool>]': select whether non-trailer lines from the trailer\n+** `only[=<bool>]`: select whether non-trailer lines from the trailer\n    block should be included.\n-** 'separator=<sep>': specify the separator inserted between trailer\n+** `separator=<sep>`: specify the separator inserted between trailer\n    lines. Defaults to a line feed character. The string <sep> may contain\n    the literal formatting codes described above. To use comma as\n    separator one must use `%x2C` as it would otherwise be parsed as\n-   next option. E.g., `%(trailers:key=Ticket,separator=%x2C )`\n+   next option. E.g., +%(trailers:key=Ticket,separator=%x2C )+\n    shows all trailer lines whose key is \"Ticket\" separated by a comma\n    and a space.\n-** 'unfold[=<bool>]': make it behave as if interpret-trailer's `--unfold`\n+** `unfold[=<bool>]`: make it behave as if interpret-trailer's `--unfold`\n    option was given. E.g.,\n-   `%(trailers:only,unfold=true)` unfolds and shows all trailer lines.\n-** 'keyonly[=<bool>]': only show the key part of the trailer.\n-** 'valueonly[=<bool>]': only show the value part of the trailer.\n-** 'key_value_separator=<sep>': specify the separator inserted between\n+   +%(trailers:only,unfold=true)+ unfolds and shows all trailer lines.\n+** `keyonly[=<bool>]`: only show the key part of the trailer.\n+** `valueonly[=<bool>]`: only show the value part of the trailer.\n+** `key_value_separator=<sep>`: specify the separator inserted between\n    the key and value of each trailer. Defaults to \": \". Otherwise it\n-   shares the same semantics as 'separator=<sep>' above.\n+   shares the same semantics as `separator=<sep>` above.\n \n NOTE: Some placeholders may depend on other options given to the\n-revision traversal engine. For example, the `%g*` reflog options will\n+revision traversal engine. For example, the +%g*+ reflog options will\n insert an empty string unless we are traversing reflog entries (e.g., by\n-`git log -g`). The `%d` and `%D` placeholders will use the \"short\"\n+`git log -g`). The +%d+ and +%D+ placeholders will use the \"short\"\n decoration format if `--decorate` was not already provided on the command\n line.\n \n The boolean options accept an optional value `[=<bool-value>]`. The\n-values taken by `--type=bool` git-config[1], like `yes` and `off`,\n+values taken by `--type=bool` linkgit:git-config[1], like `yes` and `off`,\n are all accepted.  Giving a boolean option without `=<value>` is\n equivalent to giving it with `=true`.\n \n-If you add a `+` (plus sign) after '%' of a placeholder, a line-feed\n+If you add a `+` (plus sign) after +%+ of a placeholder, a line-feed\n is inserted immediately before the expansion if and only if the\n placeholder expands to a non-empty string.\n \n-If you add a `-` (minus sign) after '%' of a placeholder, all consecutive\n+If you add a `-` (minus sign) after +%+ of a placeholder, all consecutive\n line-feeds immediately preceding the expansion are deleted if and only if the\n placeholder expands to an empty string.\n \n-If you add a ` ` (space) after '%' of a placeholder, a space\n+If you add a `' '` (space) after +%+ of a placeholder, a space\n is inserted immediately before the expansion if and only if the\n placeholder expands to a non-empty string.\n \n-* 'tformat:'\n+* `tformat:`\n +\n-The 'tformat:' format works exactly like 'format:', except that it\n+The `tformat:` format works exactly like `format:`, except that it\n provides \"terminator\" semantics instead of \"separator\" semantics. In\n other words, each commit has the message terminator character (usually a\n newline) appended, rather than a separator placed between entries.\n@@ -378,7 +381,7 @@ $ git log -2 --pretty=tformat:%h 4da45bef \\\n 7134973\n ---------------------\n +\n-In addition, any unrecognized string that has a `%` in it is interpreted\n+In addition, any unrecognized string that has a +%+ in it is interpreted\n as if it has `tformat:` in front of it.  For example, these two are\n equivalent:\n +\n-- \ngitgitgadget\n\n"},{"id":"519921","messageId":"fa91d919fa072456ae3f69b9244f3757a493becb.1749373787.git.gitgitgadget@gmail.com","threadId":"63603","inReplyTo":"pull.1933.git.1749373787.gitgitgadget@gmail.com","subject":"[PATCH 9/9] doc: git-log: convert log config to new doc format","fromName":"Jean-Noël Avila via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2025-06-08T09:09:46Z","receivedAt":"2025-06-08T09:09:58Z","isPatch":true,"sender":{"key":"jn.avila@free.fr","avatar":"https://avatars.githubusercontent.com/u/156172?v=4"},"body":"From: =?UTF-8?q?Jean-No=C3=ABl=20Avila?= <jn.avila@free.fr>\n\n- Use `backticks` for keywords and more complex option\ndescriptions. The new rendering engine will apply synopsis rules to\nthese spans.\n- Explain possible options in description list instead of in a paragraph.\n\nSigned-off-by: Jean-Noël Avila <jn.avila@free.fr>\n---\n Documentation/config/log.adoc | 45 +++++++++++++++++++----------------\n 1 file changed, 25 insertions(+), 20 deletions(-)\n\ndiff --git a/Documentation/config/log.adoc b/Documentation/config/log.adoc\nindex 9003a8219143..210439f2b641 100644\n--- a/Documentation/config/log.adoc\n+++ b/Documentation/config/log.adoc\n@@ -1,64 +1,69 @@\n-log.abbrevCommit::\n+`log.abbrevCommit`::\n \tIf true, makes linkgit:git-log[1], linkgit:git-show[1], and\n \tlinkgit:git-whatchanged[1] assume `--abbrev-commit`. You may\n \toverride this option with `--no-abbrev-commit`.\n \n-log.date::\n-\tSet the default date-time mode for the 'log' command.\n-\tSetting a value for log.date is similar to using 'git log''s\n+`log.date`::\n+\tSet the default date-time mode for the `log` command.\n+\tSetting a value for log.date is similar to using `git log`'s\n \t`--date` option.  See linkgit:git-log[1] for details.\n +\n If the format is set to \"auto:foo\" and the pager is in use, format\n \"foo\" will be used for the date format. Otherwise, \"default\" will\n be used.\n \n-log.decorate::\n+`log.decorate`::\n \tPrint out the ref names of any commits that are shown by the log\n-\tcommand. If 'short' is specified, the ref name prefixes 'refs/heads/',\n-\t'refs/tags/' and 'refs/remotes/' will not be printed. If 'full' is\n-\tspecified, the full ref name (including prefix) will be printed.\n-\tIf 'auto' is specified, then if the output is going to a terminal,\n-\tthe ref names are shown as if 'short' were given, otherwise no ref\n-\tnames are shown. This is the same as the `--decorate` option\n-\tof the `git log`.\n+\tcommand. Possible values are:\n++\n+----\n+`short`;; the ref name prefixes `refs/heads/`, `refs/tags/` and\n+\t`refs/remotes/` are not printed.\n+`full`;; the full ref name (including prefix) are printed.\n+`auto`;; if the output is going to a terminal,\n+\tthe ref names are shown as if `short` were given, otherwise no ref\n+\tnames are shown.\n+----\n++\n+This is the same as the `--decorate` option of the `git log`.\n \n-log.initialDecorationSet::\n+`log.initialDecorationSet`::\n \tBy default, `git log` only shows decorations for certain known ref\n \tnamespaces. If 'all' is specified, then show all refs as\n \tdecorations.\n \n-log.excludeDecoration::\n+`log.excludeDecoration`::\n \tExclude the specified patterns from the log decorations. This is\n \tsimilar to the `--decorate-refs-exclude` command-line option, but\n \tthe config option can be overridden by the `--decorate-refs`\n \toption.\n \n-log.diffMerges::\n+`log.diffMerges`::\n \tSet diff format to be used when `--diff-merges=on` is\n \tspecified, see `--diff-merges` in linkgit:git-log[1] for\n \tdetails. Defaults to `separate`.\n \n-log.follow::\n+`log.follow`::\n \tIf `true`, `git log` will act as if the `--follow` option was used when\n \ta single <path> is given.  This has the same limitations as `--follow`,\n \ti.e. it cannot be used to follow multiple files and does not work well\n \ton non-linear history.\n \n-log.graphColors::\n+`log.graphColors`::\n \tA list of colors, separated by commas, that can be used to draw\n \thistory lines in `git log --graph`.\n \n-log.showRoot::\n+`log.showRoot`::\n \tIf true, the initial commit will be shown as a big creation event.\n \tThis is equivalent to a diff against an empty tree.\n \tTools like linkgit:git-log[1] or linkgit:git-whatchanged[1], which\n \tnormally hide the root commit will now show it. True by default.\n \n-log.showSignature::\n+`log.showSignature`::\n \tIf true, makes linkgit:git-log[1], linkgit:git-show[1], and\n \tlinkgit:git-whatchanged[1] assume `--show-signature`.\n \n-log.mailmap::\n+`log.mailmap`::\n \tIf true, makes linkgit:git-log[1], linkgit:git-show[1], and\n \tlinkgit:git-whatchanged[1] assume `--use-mailmap`, otherwise\n \tassume `--no-use-mailmap`. True by default.\n-- \ngitgitgadget\n"},{"id":"520303","messageId":"xmqq5xgvz3ws.fsf@gitster.g","threadId":"63603","inReplyTo":"1ce06a184817d0493f4e56725aeb8ed5ccae1ba4.1749373787.git.gitgitgadget@gmail.com","subject":"Re: [PATCH 1/9] doc: convert git-log to new documentation format","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2025-06-16T23:02:11Z","receivedAt":"2025-06-16T23:02:14Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"\"Jean-Noël Avila via GitGitGadget\" <gitgitgadget@gmail.com> writes:\n\n> From: =?UTF-8?q?Jean-No=C3=ABl=20Avila?= <jn.avila@free.fr>\n>\n> - Switch the synopsis to a synopsis block which will automatically\n>   format placeholders in italics and keywords in monospace\n> - Use _<placeholder>_ instead of <placeholder> in the description\n> - Use `backticks` for keywords and more complex option\n> descriptions. The new rendering engine will apply synopsis rules to\n> these spans.\n>\n> Signed-off-by: Jean-Noël Avila <jn.avila@free.fr>\n> ---\n>  Documentation/git-log.adoc | 83 ++++++++++++++++++++------------------\n>  1 file changed, 44 insertions(+), 39 deletions(-)\n\nThis hunk (lightly edited to shift contexts) ...\n\n> ---no-decorate::\n> ---decorate[=short|full|auto|no]::\n> -\tPrint out the ref names of any commits that are shown. If 'short' is\n> -\tspecified, the ref name prefixes 'refs/heads/', 'refs/tags/' and\n> -\t'refs/remotes/' will not be printed. If 'full' is specified, the\n> -\tfull ref name (including prefix) will be printed. If 'auto' is\n> -\tspecified, then if the output is going to a terminal, the ref names\n> -\tare shown as if 'short' were given, otherwise no ref names are\n> -\tshown. The option `--decorate` is short-hand for `--decorate=short`.\n> -\tDefault to configuration value of `log.decorate` if configured,\n> -\totherwise, `auto`.\n> +`--no-decorate`::\n> +`--decorate[=(short|full|auto|no)]`::\n> +\tPrint out the ref names of any commits that are shown. Possible values\n> +\tare:\n> ++\n> +----\n> +`short`;; the ref name prefixes `refs/heads/`, `refs/tags/` and\n> +\t`refs/remotes/` are not printed.\n> +`full`;; the full ref name (including prefix) is printed.\n> +`auto`:: if the output is going to a terminal, the ref names\n> +\tare shown as if `short` were given, otherwise no ref names are\n> +\tshown.\n> +----\n> ++\n> +The option `--decorate` is short-hand for `--decorate=short`. Default to\n> +configuration value of `log.decorate` if configured, otherwise, `auto`.\n\n... does more than what the three-bullet list in the proposed log\nmessage describes.  The result is certainly easier to follow and\nmore extensible to have these possible values in an enumerated list\nthan in a prose.\n\n> +`--decorate-refs=<pattern>`::\n> +`--decorate-refs-exclude=<pattern>`::\n>  \tFor each candidate reference, do not use it for decoration if it\n> -\tmatches any patterns given to `--decorate-refs-exclude` or if it\n> -\tdoesn't match any of the patterns given to `--decorate-refs`. The\n> +\tmatches any of _<pattern>_ given to `--decorate-refs-exclude` or if it\n> +\tdoesn't match any of _<pattern>_ given to `--decorate-refs`. The\n\n\"any patterns\" in the original may not be grammatical, but the\nrewritten \"any of _<pattern>_\" does not sound grammatical, either.\n\"any of the _<pattern>_s\"?  I dunno what the convention should be\nwhen more than one <placeholder> instances have to be referenced.\n"},{"id":"520373","messageId":"xmqq4iwcenrc.fsf@gitster.g","threadId":"63603","inReplyTo":"pull.1933.git.1749373787.gitgitgadget@gmail.com","subject":"Re: [PATCH 0/9] Doc git log","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2025-06-18T21:35:51Z","receivedAt":"2025-06-18T21:35:53Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"\"Jean-Noël Avila via GitGitGadget\" <gitgitgadget@gmail.com> writes:\n\n> This series converts the man page of git log to the synopsis format style.\n> Git log is the second largest manpage after git config, which makes the\n> changes quite large.\n\n;-)\n\nOther than the \"add % to literal\" in [5/9], which I couldn't figure\nout if it truly belongs to \"doc: git-log: convert rev list options\nto new doc format\", everything looked pretty reasonable.\n\n\n"},{"id":"520392","messageId":"xmqqh60ccymk.fsf@gitster.g","threadId":"63603","inReplyTo":"ff22d0f1adf823ea3baf3ad3ddbf25add1187ce6.1749373787.git.gitgitgadget@gmail.com","subject":"Re: [PATCH 2/9] doc: git-log convert rev-list-description to new doc format","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2025-06-19T01:24:03Z","receivedAt":"2025-06-19T01:24:06Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"\"Jean-Noël Avila via GitGitGadget\" <gitgitgadget@gmail.com> writes:\n\n> -A special notation \"'<commit1>'..'<commit2>'\" can be used as a\n> -short-hand for \"^'<commit1>' '<commit2>'\". For example, either of\n> +A special notation \"`<commit1>..<commit2>`\" can be used as a\n> +short-hand for \"`^<commit1> <commit2>`\". For example, either of\n\nIt didn't look like there are huge differences in the rendered\noutput with this change (and the below hunk) ...\n\n>  the following may be used interchangeably:\n>  \n>  ifdef::git-rev-list[]\n> @@ -43,7 +43,7 @@ $ git log HEAD ^origin\n>  -----------------------------------------------------------------------\n>  endif::git-log[]\n>  \n> -Another special notation is \"'<commit1>'...'<commit2>'\" which is useful\n> +Another special notation is \"`<commit1>...<commit2>`\" which is useful\n\n... or without, but semantically the updated one of course is more\ncorrect ;-)\n"},{"id":"520420","messageId":"5897216.DvuYhMxLoT@cayenne","threadId":"63603","inReplyTo":"xmqq5xgvz3ws.fsf@gitster.g","subject":"Re: [PATCH 1/9] doc: convert git-log to new documentation format","fromName":"Jean-Noël AVILA","fromEmail":"jn.avila@free.fr","sentAt":"2025-06-19T20:51:13Z","receivedAt":"2025-06-19T20:51:29Z","isPatch":true,"sender":{"key":"jn.avila@free.fr","avatar":"https://avatars.githubusercontent.com/u/156172?v=4"},"body":"On Tuesday, 17 June 2025 01:02:11 CEST Junio C Hamano wrote:\n> \"Jean-Noël Avila via GitGitGadget\" <gitgitgadget@gmail.com> writes:\n> > From: =?UTF-8?q?Jean-No=C3=ABl=20Avila?= <jn.avila@free.fr>\n> > \n> > - Switch the synopsis to a synopsis block which will automatically\n> > \n> >   format placeholders in italics and keywords in monospace\n> > \n> > - Use _<placeholder>_ instead of <placeholder> in the description\n> > - Use `backticks` for keywords and more complex option\n> > descriptions. The new rendering engine will apply synopsis rules to\n> > these spans.\n> > \n> > Signed-off-by: Jean-Noël Avila <jn.avila@free.fr>\n> > ---\n> > \n> >  Documentation/git-log.adoc | 83 ++++++++++++++++++++------------------\n> >  1 file changed, 44 insertions(+), 39 deletions(-)\n> \n> This hunk (lightly edited to shift contexts) ...\n> \n> > ---no-decorate::\n> > ---decorate[=short|full|auto|no]::\n> > -\tPrint out the ref names of any commits that are shown. If 'short' \nis\n> > -\tspecified, the ref name prefixes 'refs/heads/', 'refs/tags/' and\n> > -\t'refs/remotes/' will not be printed. If 'full' is specified, the\n> > -\tfull ref name (including prefix) will be printed. If 'auto' is\n> > -\tspecified, then if the output is going to a terminal, the ref names\n> > -\tare shown as if 'short' were given, otherwise no ref names are\n> > -\tshown. The option `--decorate` is short-hand for `--\ndecorate=short`.\n> > -\tDefault to configuration value of `log.decorate` if configured,\n> > -\totherwise, `auto`.\n> > +`--no-decorate`::\n> > +`--decorate[=(short|full|auto|no)]`::\n> > +\tPrint out the ref names of any commits that are shown. Possible \nvalues\n> > +\tare:\n> > ++\n> > +----\n> > +`short`;; the ref name prefixes `refs/heads/`, `refs/tags/` and\n> > +\t`refs/remotes/` are not printed.\n> > +`full`;; the full ref name (including prefix) is printed.\n> > +`auto`:: if the output is going to a terminal, the ref names\n> > +\tare shown as if `short` were given, otherwise no ref names are\n> > +\tshown.\n> > +----\n> > ++\n> > +The option `--decorate` is short-hand for `--decorate=short`. Default to\n> > +configuration value of `log.decorate` if configured, otherwise, `auto`.\n> \n> ... does more than what the three-bullet list in the proposed log\n> message describes.  The result is certainly easier to follow and\n> more extensible to have these possible values in an enumerated list\n> than in a prose.\n\nTrue. That may become a new rule too.\n\n> \n> > +`--decorate-refs=<pattern>`::\n> > \n> > +`--decorate-refs-exclude=<pattern>`::\n> >  \tFor each candidate reference, do not use it for decoration if it\n> > \n> > -\tmatches any patterns given to `--decorate-refs-exclude` or if it\n> > -\tdoesn't match any of the patterns given to `--decorate-refs`. The\n> > +\tmatches any of _<pattern>_ given to `--decorate-refs-exclude` or \nif it\n> > +\tdoesn't match any of _<pattern>_ given to `--decorate-refs`. The\n> \n> \"any patterns\" in the original may not be grammatical, but the\n> rewritten \"any of _<pattern>_\" does not sound grammatical, either.\n> \"any of the _<pattern>_s\"?  I dunno what the convention should be\n> when more than one <placeholder> instances have to be referenced.\n\nGood question for which I was more inclined to consider placeholders as \ninvariant, even if the result may sound \"ungrammatical\". This also simplifies \nthe translation process where the plural forms can be complicated in some \nlanguages.\n\n\n\n"},{"id":"520421","messageId":"4658957.LvFx2qVVIh@cayenne","threadId":"63603","inReplyTo":"xmqqh60ccymk.fsf@gitster.g","subject":"Re: [PATCH 2/9] doc: git-log convert rev-list-description to new doc format","fromName":"Jean-Noël AVILA","fromEmail":"jn.avila@free.fr","sentAt":"2025-06-19T20:55:22Z","receivedAt":"2025-06-19T20:55:26Z","isPatch":true,"sender":{"key":"jn.avila@free.fr","avatar":"https://avatars.githubusercontent.com/u/156172?v=4"},"body":"On Thursday, 19 June 2025 03:24:03 CEST Junio C Hamano wrote:\n> \"Jean-Noël Avila via GitGitGadget\" <gitgitgadget@gmail.com> writes:\n> > -A special notation \"'<commit1>'..'<commit2>'\" can be used as a\n> > -short-hand for \"^'<commit1>' '<commit2>'\". For example, either of\n> > +A special notation \"`<commit1>..<commit2>`\" can be used as a\n> > +short-hand for \"`^<commit1> <commit2>`\". For example, either of\n> \n> It didn't look like there are huge differences in the rendered\n> output with this change (and the below hunk) ...\n> \n> >  the following may be used interchangeably:\n> >  \n> >  ifdef::git-rev-list[]\n> > \n> > @@ -43,7 +43,7 @@ $ git log HEAD ^origin\n> > \n> >  -----------------------------------------------------------------------\n> >  endif::git-log[]\n> > \n> > -Another special notation is \"'<commit1>'...'<commit2>'\" which is useful\n> > +Another special notation is \"`<commit1>...<commit2>`\" which is useful\n> \n> ... or without, but semantically the updated one of course is more\n> correct ;-)\n\nI have a special setup where bold and italic are rendered as colors in the \nmanpages, red for bold, green for italic. The dots turn red with this change.\n\n\n\n"},{"id":"520879","messageId":"pull.1933.v2.git.1751203241.gitgitgadget@gmail.com","threadId":"63603","inReplyTo":"pull.1933.git.1749373787.gitgitgadget@gmail.com","subject":"[PATCH v2 0/9] doc: convert git log man page to new synopsis format","fromName":"Jean-Noël Avila via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2025-06-29T13:20:32Z","receivedAt":"2025-06-29T13:20:45Z","isPatch":true,"sender":{"key":"jn.avila@free.fr","avatar":"https://avatars.githubusercontent.com/u/156172?v=4"},"body":"This series converts the man page of git log to the synopsis format style.\nGit log is the second largest manpage after git config, which makes the\nchanges quite large.\n\nA special note about the log format description which required escaping the\nsynopsis processing of parentheses.\n\nChanges since V1:\n\n * rework the grammar style when refering to plural placeholders . The text\n   is more descriptive and does not rely on puns. Puns may be difficult to\n   understand and to translate.\n * change commit message to reflect the conversion of inline description of\n   several option to a list.\n\nJean-Noël Avila (9):\n  doc: convert git-log to new documentation format\n  doc: git-log convert rev-list-description  to new doc format\n  doc: git-log: convert line range options to new doc format\n  doc: git-log: convert line range format to new doc format\n  doc: git-log: convert rev list options to new doc format\n  doc: git-log: convert pretty options to new doc format\n  doc: git-log: convert pretty formats to new doc format\n  doc: git-log: convert diff options to new doc format\n  doc: git-log: convert log config to new doc format\n\n Documentation/asciidoc.conf.in             |   2 +-\n Documentation/asciidoctor-extensions.rb.in |   4 +-\n Documentation/config/log.adoc              |  47 +--\n Documentation/diff-options.adoc            |  40 ++-\n Documentation/git-log.adoc                 |  86 ++---\n Documentation/line-range-format.adoc       |  26 +-\n Documentation/line-range-options.adoc      |  10 +-\n Documentation/pretty-formats.adoc          | 283 +++++++--------\n Documentation/pretty-options.adoc          |  71 ++--\n Documentation/rev-list-description.adoc    |   6 +-\n Documentation/rev-list-options.adoc        | 390 ++++++++++-----------\n 11 files changed, 493 insertions(+), 472 deletions(-)\n\n\nbase-commit: cf6f63ea6bf35173e02e18bdc6a4ba41288acff9\nPublished-As: https://github.com/gitgitgadget/git/releases/tag/pr-1933%2Fjnavila%2Fdoc_git_log-v2\nFetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1933/jnavila/doc_git_log-v2\nPull-Request: https://github.com/gitgitgadget/git/pull/1933\n\nRange-diff vs v1:\n\n  1:  1ce06a18481 !  1:  f2b69588195 doc: convert git-log to new documentation format\n     @@ Commit message\n          descriptions. The new rendering engine will apply synopsis rules to\n          these spans.\n      \n     +    We also transform inline descriptions of possible values of option\n     +    --decorate into a list, which is more readable and extensible.\n     +\n          Signed-off-by: Jean-Noël Avila <jn.avila@free.fr>\n      \n       ## Documentation/git-log.adoc ##\n     @@ Documentation/git-log.adoc: each commit introduces are shown.\n       \tFor each candidate reference, do not use it for decoration if it\n      -\tmatches any patterns given to `--decorate-refs-exclude` or if it\n      -\tdoesn't match any of the patterns given to `--decorate-refs`. The\n     -+\tmatches any of _<pattern>_ given to `--decorate-refs-exclude` or if it\n     -+\tdoesn't match any of _<pattern>_ given to `--decorate-refs`. The\n     - \t`log.excludeDecoration` config option allows excluding refs from\n     +-\t`log.excludeDecoration` config option allows excluding refs from\n     ++\tmatches any of the _<pattern>_ parameters given to\n     ++\t`--decorate-refs-exclude` or if it doesn't match any of the\n     ++\t_<pattern>_ parameters given to `--decorate-refs`.\n     ++\tThe `log.excludeDecoration` config option allows excluding refs from\n       \tthe decorations, but an explicit `--decorate-refs` pattern will\n       \toverride a match in `log.excludeDecoration`.\n     + +\n      @@ Documentation/git-log.adoc: If none of these options or config settings are given, then references are\n       used as decoration if they match `HEAD`, `refs/heads/`, `refs/remotes/`,\n       `refs/stash/`, or `refs/tags/`.\n  2:  ff22d0f1adf =  2:  1f6c951726b doc: git-log convert rev-list-description  to new doc format\n  3:  3992c1786ef =  3:  7bab515e136 doc: git-log: convert line range options to new doc format\n  4:  d451d7f6c0a =  4:  384a7d23563 doc: git-log: convert line range format to new doc format\n  5:  71d9a374102 =  5:  c2e857105d4 doc: git-log: convert rev list options to new doc format\n  6:  5004a622c3f !  6:  01835272c2e doc: git-log: convert pretty options to new doc format\n     @@ Documentation/pretty-options.adoc: people using 80-column terminals.\n      +`--notes[=<ref>]`::\n       \tShow the notes (see linkgit:git-notes[1]) that annotate the\n       \tcommit, when showing the commit log message.  This is the default\n     - \tfor `git log`, `git show` and `git whatchanged` commands when\n     + ifndef::with-breaking-changes[]\n      @@ Documentation/pretty-options.adoc: to display.  The ref can specify the full refname when it begins\n       with `refs/notes/`; when it begins with `notes/`, `refs/` and otherwise\n       `refs/notes/` is prefixed to form the full name of the ref.\n  7:  d54e297567a =  7:  d5490f7d868 doc: git-log: convert pretty formats to new doc format\n  8:  9f9ce432bd6 =  8:  c2346eb580c doc: git-log: convert diff options to new doc format\n  9:  fa91d919fa0 !  9:  b12b8294b86 doc: git-log: convert log config to new doc format\n     @@ Commit message\n       ## Documentation/config/log.adoc ##\n      @@\n      -log.abbrevCommit::\n     +-\tIf true, makes\n      +`log.abbrevCommit`::\n     - \tIf true, makes linkgit:git-log[1], linkgit:git-show[1], and\n     - \tlinkgit:git-whatchanged[1] assume `--abbrev-commit`. You may\n     ++\tIf `true`, make\n     + ifndef::with-breaking-changes[]\n     + \tlinkgit:git-log[1], linkgit:git-show[1], and\n     + \tlinkgit:git-whatchanged[1]\n     +@@ Documentation/config/log.adoc: endif::with-breaking-changes[]\n     + \tassume `--abbrev-commit`. You may\n       \toverride this option with `--no-abbrev-commit`.\n       \n      -log.date::\n\n-- \ngitgitgadget\n"},{"id":"520880","messageId":"f2b6958819537cb1c0663124360d0896d6263deb.1751203241.git.gitgitgadget@gmail.com","threadId":"63603","inReplyTo":"pull.1933.v2.git.1751203241.gitgitgadget@gmail.com","subject":"[PATCH v2 1/9] doc: convert git-log to new documentation format","fromName":"Jean-Noël Avila via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2025-06-29T13:20:33Z","receivedAt":"2025-06-29T13:20:46Z","isPatch":true,"sender":{"key":"jn.avila@free.fr","avatar":"https://avatars.githubusercontent.com/u/156172?v=4"},"body":"From: =?UTF-8?q?Jean-No=C3=ABl=20Avila?= <jn.avila@free.fr>\n\n- Switch the synopsis to a synopsis block which will automatically\n  format placeholders in italics and keywords in monospace\n- Use _<placeholder>_ instead of <placeholder> in the description\n- Use `backticks` for keywords and more complex option\ndescriptions. The new rendering engine will apply synopsis rules to\nthese spans.\n\nWe also transform inline descriptions of possible values of option\n--decorate into a list, which is more readable and extensible.\n\nSigned-off-by: Jean-Noël Avila <jn.avila@free.fr>\n---\n Documentation/git-log.adoc | 86 ++++++++++++++++++++------------------\n 1 file changed, 46 insertions(+), 40 deletions(-)\n\ndiff --git a/Documentation/git-log.adoc b/Documentation/git-log.adoc\nindex ae8a7e2d6389..b6f3d92c435f 100644\n--- a/Documentation/git-log.adoc\n+++ b/Documentation/git-log.adoc\n@@ -8,8 +8,8 @@ git-log - Show commit logs\n \n SYNOPSIS\n --------\n-[verse]\n-'git log' [<options>] [<revision-range>] [[--] <path>...]\n+[synopsis]\n+git log [<options>] [<revision-range>] [[--] <path>...]\n \n DESCRIPTION\n -----------\n@@ -27,28 +27,34 @@ each commit introduces are shown.\n OPTIONS\n -------\n \n---follow::\n+`--follow`::\n \tContinue listing the history of a file beyond renames\n \t(works only for a single file).\n \n---no-decorate::\n---decorate[=short|full|auto|no]::\n-\tPrint out the ref names of any commits that are shown. If 'short' is\n-\tspecified, the ref name prefixes 'refs/heads/', 'refs/tags/' and\n-\t'refs/remotes/' will not be printed. If 'full' is specified, the\n-\tfull ref name (including prefix) will be printed. If 'auto' is\n-\tspecified, then if the output is going to a terminal, the ref names\n-\tare shown as if 'short' were given, otherwise no ref names are\n-\tshown. The option `--decorate` is short-hand for `--decorate=short`.\n-\tDefault to configuration value of `log.decorate` if configured,\n-\totherwise, `auto`.\n-\n---decorate-refs=<pattern>::\n---decorate-refs-exclude=<pattern>::\n+`--no-decorate`::\n+`--decorate[=(short|full|auto|no)]`::\n+\tPrint out the ref names of any commits that are shown. Possible values\n+\tare:\n++\n+----\n+`short`;; the ref name prefixes `refs/heads/`, `refs/tags/` and\n+\t`refs/remotes/` are not printed.\n+`full`;; the full ref name (including prefix) is printed.\n+`auto`:: if the output is going to a terminal, the ref names\n+\tare shown as if `short` were given, otherwise no ref names are\n+\tshown.\n+----\n++\n+The option `--decorate` is short-hand for `--decorate=short`. Default to\n+configuration value of `log.decorate` if configured, otherwise, `auto`.\n+\n+`--decorate-refs=<pattern>`::\n+`--decorate-refs-exclude=<pattern>`::\n \tFor each candidate reference, do not use it for decoration if it\n-\tmatches any patterns given to `--decorate-refs-exclude` or if it\n-\tdoesn't match any of the patterns given to `--decorate-refs`. The\n-\t`log.excludeDecoration` config option allows excluding refs from\n+\tmatches any of the _<pattern>_ parameters given to\n+\t`--decorate-refs-exclude` or if it doesn't match any of the\n+\t_<pattern>_ parameters given to `--decorate-refs`.\n+\tThe `log.excludeDecoration` config option allows excluding refs from\n \tthe decorations, but an explicit `--decorate-refs` pattern will\n \toverride a match in `log.excludeDecoration`.\n +\n@@ -56,51 +62,51 @@ If none of these options or config settings are given, then references are\n used as decoration if they match `HEAD`, `refs/heads/`, `refs/remotes/`,\n `refs/stash/`, or `refs/tags/`.\n \n---clear-decorations::\n+`--clear-decorations`::\n \tWhen specified, this option clears all previous `--decorate-refs`\n \tor `--decorate-refs-exclude` options and relaxes the default\n \tdecoration filter to include all references. This option is\n \tassumed if the config value `log.initialDecorationSet` is set to\n \t`all`.\n \n---source::\n+`--source`::\n \tPrint out the ref name given on the command line by which each\n \tcommit was reached.\n \n---[no-]mailmap::\n---[no-]use-mailmap::\n+`--[no-]mailmap`::\n+`--[no-]use-mailmap`::\n \tUse mailmap file to map author and committer names and email\n \taddresses to canonical real names and email addresses. See\n \tlinkgit:git-shortlog[1].\n \n---full-diff::\n+`--full-diff`::\n \tWithout this flag, `git log -p <path>...` shows commits that\n \ttouch the specified paths, and diffs about the same specified\n \tpaths.  With this, the full diff is shown for commits that touch\n-\tthe specified paths; this means that \"<path>...\" limits only\n+\tthe specified paths; this means that \"`<path>...`\" limits only\n \tcommits, and doesn't limit diff for those commits.\n +\n Note that this affects all diff-based output types, e.g. those\n produced by `--stat`, etc.\n \n---log-size::\n-\tInclude a line ``log size <number>'' in the output for each commit,\n-\twhere <number> is the length of that commit's message in bytes.\n+`--log-size`::\n+\tInclude a line `log size <number>` in the output for each commit,\n+\twhere _<number>_ is the length of that commit's message in bytes.\n \tIntended to speed up tools that read log messages from `git log`\n \toutput by allowing them to allocate space in advance.\n \n include::line-range-options.adoc[]\n \n-<revision-range>::\n+_<revision-range>_::\n \tShow only commits in the specified revision range.  When no\n-\t<revision-range> is specified, it defaults to `HEAD` (i.e. the\n+\t_<revision-range>_ is specified, it defaults to `HEAD` (i.e. the\n \twhole history leading to the current commit).  `origin..HEAD`\n \tspecifies all the commits reachable from the current commit\n \t(i.e. `HEAD`), but not from `origin`. For a complete list of\n-\tways to spell <revision-range>, see the 'Specifying Ranges'\n+\tways to spell _<revision-range>_, see the 'Specifying Ranges'\n \tsection of linkgit:gitrevisions[7].\n \n-[--] <path>...::\n+`[--] <path>...`::\n \tShow only commits that are enough to explain how the files\n \tthat match the specified paths came to be.  See 'History\n \tSimplification' below for details and other simplification\n@@ -145,14 +151,14 @@ EXAMPLES\n \n `git log --since=\"2 weeks ago\" -- gitk`::\n \n-\tShow the changes during the last two weeks to the file 'gitk'.\n+\tShow the changes during the last two weeks to the file `gitk`.\n \tThe `--` is necessary to avoid confusion with the *branch* named\n-\t'gitk'\n+\t`gitk`\n \n `git log --name-status release..test`::\n \n-\tShow the commits that are in the \"test\" branch but not yet\n-\tin the \"release\" branch, along with the list of paths\n+\tShow the commits that are in the \"`test`\" branch but not yet\n+\tin the \"`release`\" branch, along with the list of paths\n \teach commit modifies.\n \n `git log --follow builtin/rev-list.c`::\n@@ -164,7 +170,7 @@ EXAMPLES\n `git log --branches --not --remotes=origin`::\n \n \tShows all commits that are in any of local branches but not in\n-\tany of remote-tracking branches for 'origin' (what you have that\n+\tany of remote-tracking branches for `origin` (what you have that\n \torigin doesn't).\n \n `git log master --not --remotes=*/master`::\n@@ -200,11 +206,11 @@ CONFIGURATION\n See linkgit:git-config[1] for core variables and linkgit:git-diff[1]\n for settings related to diff generation.\n \n-format.pretty::\n+`format.pretty`::\n \tDefault for the `--format` option.  (See 'Pretty Formats' above.)\n \tDefaults to `medium`.\n \n-i18n.logOutputEncoding::\n+`i18n.logOutputEncoding`::\n \tEncoding to use when displaying logs.  (See 'Discussion' above.)\n \tDefaults to the value of `i18n.commitEncoding` if set, and UTF-8\n \totherwise.\n-- \ngitgitgadget\n\n"},{"id":"520881","messageId":"1f6c951726bb98350c443dd75024150f316fe0cd.1751203241.git.gitgitgadget@gmail.com","threadId":"63603","inReplyTo":"pull.1933.v2.git.1751203241.gitgitgadget@gmail.com","subject":"[PATCH v2 2/9] doc: git-log convert rev-list-description to new doc format","fromName":"Jean-Noël Avila via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2025-06-29T13:20:34Z","receivedAt":"2025-06-29T13:20:47Z","isPatch":true,"sender":{"key":"jn.avila@free.fr","avatar":"https://avatars.githubusercontent.com/u/156172?v=4"},"body":"From: =?UTF-8?q?Jean-No=C3=ABl=20Avila?= <jn.avila@free.fr>\n\nUse `backticks` for commit ranges. The new rendering engine will apply\nsynopsis rules to these spans.\n\nSigned-off-by: Jean-Noël Avila <jn.avila@free.fr>\n---\n Documentation/rev-list-description.adoc | 6 +++---\n 1 file changed, 3 insertions(+), 3 deletions(-)\n\ndiff --git a/Documentation/rev-list-description.adoc b/Documentation/rev-list-description.adoc\nindex a9efa7fa2722..82c680e57013 100644\n--- a/Documentation/rev-list-description.adoc\n+++ b/Documentation/rev-list-description.adoc\n@@ -26,8 +26,8 @@ endif::git-log[]\n means \"list all the commits which are reachable from 'foo' or 'bar', but\n not from 'baz'\".\n \n-A special notation \"'<commit1>'..'<commit2>'\" can be used as a\n-short-hand for \"^'<commit1>' '<commit2>'\". For example, either of\n+A special notation \"`<commit1>..<commit2>`\" can be used as a\n+short-hand for \"`^<commit1> <commit2>`\". For example, either of\n the following may be used interchangeably:\n \n ifdef::git-rev-list[]\n@@ -43,7 +43,7 @@ $ git log HEAD ^origin\n -----------------------------------------------------------------------\n endif::git-log[]\n \n-Another special notation is \"'<commit1>'...'<commit2>'\" which is useful\n+Another special notation is \"`<commit1>...<commit2>`\" which is useful\n for merges.  The resulting set of commits is the symmetric difference\n between the two operands.  The following two commands are equivalent:\n \n-- \ngitgitgadget\n\n"},{"id":"520882","messageId":"7bab515e136bcb144757285104647c38c73ac505.1751203241.git.gitgitgadget@gmail.com","threadId":"63603","inReplyTo":"pull.1933.v2.git.1751203241.gitgitgadget@gmail.com","subject":"[PATCH v2 3/9] doc: git-log: convert line range options to new doc format","fromName":"Jean-Noël Avila via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2025-06-29T13:20:35Z","receivedAt":"2025-06-29T13:20:48Z","isPatch":true,"sender":{"key":"jn.avila@free.fr","avatar":"https://avatars.githubusercontent.com/u/156172?v=4"},"body":"From: =?UTF-8?q?Jean-No=C3=ABl=20Avila?= <jn.avila@free.fr>\n\n  format placeholders in italics and keywords in monospace\n- Use _<placeholder>_ instead of <placeholder> in the description\n- Use `backticks` for keywords and more complex option\ndescriptions. The new rendering engine will apply synopsis rules to\nthese spans.\n\nSigned-off-by: Jean-Noël Avila <jn.avila@free.fr>\n---\n Documentation/line-range-options.adoc | 10 +++++-----\n 1 file changed, 5 insertions(+), 5 deletions(-)\n\ndiff --git a/Documentation/line-range-options.adoc b/Documentation/line-range-options.adoc\nindex f275df3b69fa..c44ba05320f9 100644\n--- a/Documentation/line-range-options.adoc\n+++ b/Documentation/line-range-options.adoc\n@@ -1,12 +1,12 @@\n--L<start>,<end>:<file>::\n--L:<funcname>:<file>::\n+`-L<start>,<end>:<file>`::\n+`-L:<funcname>:<file>`::\n \n-\tTrace the evolution of the line range given by '<start>,<end>',\n-\tor by the function name regex '<funcname>', within the '<file>'. You may\n+\tTrace the evolution of the line range given by `<start>,<end>`,\n+\tor by the function name regex _<funcname>_, within the _<file>_. You may\n \tnot give any pathspec limiters.  This is currently limited to\n \ta walk starting from a single revision, i.e., you may only\n \tgive zero or one positive revision arguments, and\n-\t'<start>' and '<end>' (or '<funcname>') must exist in the starting revision.\n+\t_<start>_ and _<end>_ (or _<funcname>_) must exist in the starting revision.\n \tYou can specify this option more than once. Implies `--patch`.\n \tPatch output can be suppressed using `--no-patch`, but other diff formats\n \t(namely `--raw`, `--numstat`, `--shortstat`, `--dirstat`, `--summary`,\n-- \ngitgitgadget\n\n"},{"id":"520883","messageId":"384a7d23563ade9764a261be5492dc229445a8d0.1751203241.git.gitgitgadget@gmail.com","threadId":"63603","inReplyTo":"pull.1933.v2.git.1751203241.gitgitgadget@gmail.com","subject":"[PATCH v2 4/9] doc: git-log: convert line range format to new doc format","fromName":"Jean-Noël Avila via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2025-06-29T13:20:36Z","receivedAt":"2025-06-29T13:20:48Z","isPatch":true,"sender":{"key":"jn.avila@free.fr","avatar":"https://avatars.githubusercontent.com/u/156172?v=4"},"body":"From: =?UTF-8?q?Jean-No=C3=ABl=20Avila?= <jn.avila@free.fr>\n\n- Use _<placeholder>_ instead of <placeholder> in the description\n- Use `backticks` for keywords and more complex option\ndescriptions. The new rendering engine will apply synopsis rules to\nthese spans.\n\nSigned-off-by: Jean-Noël Avila <jn.avila@free.fr>\n---\n Documentation/line-range-format.adoc | 26 +++++++++++++-------------\n 1 file changed, 13 insertions(+), 13 deletions(-)\n\ndiff --git a/Documentation/line-range-format.adoc b/Documentation/line-range-format.adoc\nindex 9b51e9fb6614..3cc2a14544cf 100644\n--- a/Documentation/line-range-format.adoc\n+++ b/Documentation/line-range-format.adoc\n@@ -1,30 +1,30 @@\n-'<start>' and '<end>' can take one of these forms:\n+_<start>_ and _<end>_ can take one of these forms:\n \n-- number\n+- _<number>_\n +\n-If '<start>' or '<end>' is a number, it specifies an\n+If _<start>_ or _<end>_ is a number, it specifies an\n absolute line number (lines count from 1).\n +\n \n-- `/regex/`\n+- `/<regex>/`\n +\n This form will use the first line matching the given\n-POSIX regex. If '<start>' is a regex, it will search from the end of\n+POSIX _<regex>_. If _<start>_ is a regex, it will search from the end of\n the previous `-L` range, if any, otherwise from the start of file.\n-If '<start>' is `^/regex/`, it will search from the start of file.\n-If '<end>' is a regex, it will search\n-starting at the line given by '<start>'.\n+If _<start>_ is `^/<regex>/`, it will search from the start of file.\n+If _<end>_ is a regex, it will search starting at the line given by\n+_<start>_.\n +\n \n-- +offset or -offset\n+- `+<offset>` or `-<offset>`\n +\n-This is only valid for '<end>' and will specify a number\n-of lines before or after the line given by '<start>'.\n+This is only valid for _<end>_ and will specify a number\n+of lines before or after the line given by _<start>_.\n \n +\n-If `:<funcname>` is given in place of '<start>' and '<end>', it is a\n+If `:<funcname>` is given in place of _<start>_ and _<end>_, it is a\n regular expression that denotes the range from the first funcname line\n-that matches '<funcname>', up to the next funcname line. `:<funcname>`\n+that matches _<funcname>_, up to the next funcname line. `:<funcname>`\n searches from the end of the previous `-L` range, if any, otherwise\n from the start of file. `^:<funcname>` searches from the start of\n file. The function names are determined in the same way as `git diff`\n-- \ngitgitgadget\n\n"},{"id":"520884","messageId":"01835272c2e92269ba0e571b29d0756f63fe9c79.1751203241.git.gitgitgadget@gmail.com","threadId":"63603","inReplyTo":"pull.1933.v2.git.1751203241.gitgitgadget@gmail.com","subject":"[PATCH v2 6/9] doc: git-log: convert pretty options to new doc format","fromName":"Jean-Noël Avila via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2025-06-29T13:20:38Z","receivedAt":"2025-06-29T13:20:50Z","isPatch":true,"sender":{"key":"jn.avila@free.fr","avatar":"https://avatars.githubusercontent.com/u/156172?v=4"},"body":"From: =?UTF-8?q?Jean-No=C3=ABl=20Avila?= <jn.avila@free.fr>\n\n- Use _<placeholder>_ instead of <placeholder> in the description\n- Use `backticks` for keywords and more complex option\ndescriptions. The new rendering engine will apply synopsis rules to\nthese spans.\n\nSigned-off-by: Jean-Noël Avila <jn.avila@free.fr>\n---\n Documentation/pretty-options.adoc | 71 ++++++++++++++++---------------\n 1 file changed, 36 insertions(+), 35 deletions(-)\n\ndiff --git a/Documentation/pretty-options.adoc b/Documentation/pretty-options.adoc\nindex b36e96abe28a..963f4f0204f0 100644\n--- a/Documentation/pretty-options.adoc\n+++ b/Documentation/pretty-options.adoc\n@@ -1,38 +1,38 @@\n---pretty[=<format>]::\n---format=<format>::\n+`--pretty[=<format>]`::\n+`--format=<format>`::\n \n \tPretty-print the contents of the commit logs in a given format,\n-\twhere '<format>' can be one of 'oneline', 'short', 'medium',\n-\t'full', 'fuller', 'reference', 'email', 'raw', 'format:<string>'\n-\tand 'tformat:<string>'.  When '<format>' is none of the above,\n-\tand has '%placeholder' in it, it acts as if\n-\t'--pretty=tformat:<format>' were given.\n+\twhere '<format>' can be one of `oneline`, `short`, `medium`,\n+\t`full`, `fuller`, `reference`, `email`, `raw`, `format:<string>`\n+\tand `tformat:<string>`.  When _<format>_ is none of the above,\n+\tand has `%<placeholder>` in it, it acts as if\n+\t`--pretty=tformat:<format>` were given.\n +\n See the \"PRETTY FORMATS\" section for some additional details for each\n-format.  When '=<format>' part is omitted, it defaults to 'medium'.\n+format.  When `=<format>` part is omitted, it defaults to `medium.\n +\n-Note: you can specify the default pretty format in the repository\n+NOTE: you can specify the default pretty format in the repository\n configuration (see linkgit:git-config[1]).\n \n---abbrev-commit::\n+`--abbrev-commit`::\n \tInstead of showing the full 40-byte hexadecimal commit object\n \tname, show a prefix that names the object uniquely.\n-\t\"--abbrev=<n>\" (which also modifies diff output, if it is displayed)\n+\t`--abbrev=<n>` (which also modifies diff output, if it is displayed)\n \toption can be used to specify the minimum length of the prefix.\n +\n-This should make \"--pretty=oneline\" a whole lot more readable for\n+This should make `--pretty=oneline` a whole lot more readable for\n people using 80-column terminals.\n \n---no-abbrev-commit::\n+`--no-abbrev-commit`::\n \tShow the full 40-byte hexadecimal commit object name. This negates\n \t`--abbrev-commit`, either explicit or implied by other options such\n-\tas \"--oneline\". It also overrides the `log.abbrevCommit` variable.\n+\tas `--oneline`. It also overrides the `log.abbrevCommit` variable.\n \n---oneline::\n-\tThis is a shorthand for \"--pretty=oneline --abbrev-commit\"\n+`--oneline`::\n+\tThis is a shorthand for `--pretty=oneline --abbrev-commit`\n \tused together.\n \n---encoding=<encoding>::\n+`--encoding=<encoding>`::\n \tCommit objects record the character encoding used for the log message\n \tin their encoding header; this option can be used to tell the\n \tcommand to re-code the commit log message in the encoding\n@@ -44,22 +44,22 @@ people using 80-column terminals.\n \tto convert the commit, we will quietly output the original\n \tobject verbatim.\n \n---expand-tabs=<n>::\n---expand-tabs::\n---no-expand-tabs::\n+`--expand-tabs=<n>`::\n+`--expand-tabs`::\n+`--no-expand-tabs`::\n \tPerform a tab expansion (replace each tab with enough spaces\n-\tto fill to the next display column that is a multiple of '<n>')\n+\tto fill to the next display column that is a multiple of _<n>_)\n \tin the log message before showing it in the output.\n \t`--expand-tabs` is a short-hand for `--expand-tabs=8`, and\n \t`--no-expand-tabs` is a short-hand for `--expand-tabs=0`,\n \twhich disables tab expansion.\n +\n By default, tabs are expanded in pretty formats that indent the log\n-message by 4 spaces (i.e.  'medium', which is the default, 'full',\n-and 'fuller').\n+message by 4 spaces (i.e.  `medium`, which is the default, `full`,\n+and `fuller`).\n \n ifndef::git-rev-list[]\n---notes[=<ref>]::\n+`--notes[=<ref>]`::\n \tShow the notes (see linkgit:git-notes[1]) that annotate the\n \tcommit, when showing the commit log message.  This is the default\n ifndef::with-breaking-changes[]\n@@ -80,28 +80,29 @@ to display.  The ref can specify the full refname when it begins\n with `refs/notes/`; when it begins with `notes/`, `refs/` and otherwise\n `refs/notes/` is prefixed to form the full name of the ref.\n +\n-Multiple --notes options can be combined to control which notes are\n-being displayed. Examples: \"--notes=foo\" will show only notes from\n-\"refs/notes/foo\"; \"--notes=foo --notes\" will show both notes from\n+Multiple `--notes` options can be combined to control which notes are\n+being displayed. Examples: \"`--notes=foo`\" will show only notes from\n+`refs/notes/foo`; \"`--notes=foo --notes`\" will show both notes from\n \"refs/notes/foo\" and from the default notes ref(s).\n \n---no-notes::\n+`--no-notes`::\n \tDo not show notes. This negates the above `--notes` option, by\n \tresetting the list of notes refs from which notes are shown.\n \tOptions are parsed in the order given on the command line, so e.g.\n-\t\"--notes --notes=foo --no-notes --notes=bar\" will only show notes\n-\tfrom \"refs/notes/bar\".\n+\t\"`--notes --notes=foo --no-notes --notes=bar`\" will only show notes\n+\tfrom `refs/notes/bar`.\n \n---show-notes-by-default::\n+`--show-notes-by-default`::\n \tShow the default notes unless options for displaying specific\n \tnotes are given.\n \n---show-notes[=<ref>]::\n---[no-]standard-notes::\n-\tThese options are deprecated. Use the above --notes/--no-notes\n+`--show-notes[=<ref>]`::\n+`--standard-notes`::\n+`--no-standard-notes`::\n+\tThese options are deprecated. Use the above `--notes`/`--no-notes`\n \toptions instead.\n endif::git-rev-list[]\n \n---show-signature::\n+`--show-signature`::\n \tCheck the validity of a signed commit object by passing the signature\n \tto `gpg --verify` and show the output.\n-- \ngitgitgadget\n\n"},{"id":"520885","messageId":"c2e857105d410f66edb7889884dc68ae707daa24.1751203241.git.gitgitgadget@gmail.com","threadId":"63603","inReplyTo":"pull.1933.v2.git.1751203241.gitgitgadget@gmail.com","subject":"[PATCH v2 5/9] doc: git-log: convert rev list options to new doc format","fromName":"Jean-Noël Avila via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2025-06-29T13:20:37Z","receivedAt":"2025-06-29T13:20:50Z","isPatch":true,"sender":{"key":"jn.avila@free.fr","avatar":"https://avatars.githubusercontent.com/u/156172?v=4"},"body":"From: =?UTF-8?q?Jean-No=C3=ABl=20Avila?= <jn.avila@free.fr>\n\n- Fix some malformed synopis of options\n- Use _<placeholder>_ instead of <placeholder> in the description\n- Use `backticks` for keywords and more complex option\ndescriptions. The new rendering engine will apply synopsis rules to\nthese spans.\n- Add the '%' sign to the characters of keywords.\n\nSigned-off-by: Jean-Noël Avila <jn.avila@free.fr>\n---\n Documentation/asciidoc.conf.in             |   2 +-\n Documentation/asciidoctor-extensions.rb.in |   4 +-\n Documentation/rev-list-options.adoc        | 390 ++++++++++-----------\n 3 files changed, 198 insertions(+), 198 deletions(-)\n\ndiff --git a/Documentation/asciidoc.conf.in b/Documentation/asciidoc.conf.in\nindex 9d9139306e6f..ff9ea0a29445 100644\n--- a/Documentation/asciidoc.conf.in\n+++ b/Documentation/asciidoc.conf.in\n@@ -43,7 +43,7 @@ ifdef::doctype-book[]\n endif::doctype-book[]\n \n [literal-inlinemacro]\n-{eval:re.sub(r'(&lt;[-a-zA-Z0-9.]+&gt;)', r'<emphasis>\\1</emphasis>', re.sub(r'([\\[\\s|()>]|^|\\]|&gt;)(\\.?([-a-zA-Z0-9:+=~@\\\\\\*\\/_^\\$]+\\.?)+|,)',r'\\1<literal>\\2</literal>', re.sub(r'(\\.\\.\\.?)([^\\]$.])', r'<literal>\\1</literal>\\2', macros.passthroughs[int(attrs['passtext'][1:-1])] if attrs['passtext'][1:-1].isnumeric() else attrs['passtext'][1:-1])))}\n+{eval:re.sub(r'(&lt;[-a-zA-Z0-9.]+&gt;)', r'<emphasis>\\1</emphasis>', re.sub(r'([\\[\\s|()>]|^|\\]|&gt;)(\\.?([-a-zA-Z0-9:+=~@\\\\\\*\\/_^\\$%]+\\.?)+|,)',r'\\1<literal>\\2</literal>', re.sub(r'(\\.\\.\\.?)([^\\]$.])', r'<literal>\\1</literal>\\2', macros.passthroughs[int(attrs['passtext'][1:-1])] if attrs['passtext'][1:-1].isnumeric() else attrs['passtext'][1:-1])))}\n \n endif::backend-docbook[]\n \ndiff --git a/Documentation/asciidoctor-extensions.rb.in b/Documentation/asciidoctor-extensions.rb.in\nindex 8b7b16134967..fe64a62d9683 100644\n--- a/Documentation/asciidoctor-extensions.rb.in\n+++ b/Documentation/asciidoctor-extensions.rb.in\n@@ -73,7 +73,7 @@ module Git\n         elsif type == :monospaced\n           node.text.gsub(/(\\.\\.\\.?)([^\\]$\\.])/, '<literal>\\1</literal>\\2')\n               .gsub(/^\\.\\.\\.?$/, '<literal>\\0</literal>')\n-              .gsub(%r{([\\[\\s|()>.]|^|\\]|&gt;)(\\.?([-a-zA-Z0-9:+=~@/_^\\$\\\\\\*]+\\.{0,2})+|,)}, '\\1<literal>\\2</literal>')\n+              .gsub(%r{([\\[\\s|()>.]|^|\\]|&gt;)(\\.?([-a-zA-Z0-9:+=~@/_^\\$\\\\\\*%]+\\.{0,2})+|,)}, '\\1<literal>\\2</literal>')\n               .gsub(/(&lt;[-a-zA-Z0-9.]+&gt;)/, '<emphasis>\\1</emphasis>')\n         else\n           open, close, supports_phrase = QUOTE_TAGS[type]\n@@ -102,7 +102,7 @@ module Git\n         if node.type == :monospaced\n           node.text.gsub(/(\\.\\.\\.?)([^\\]$.])/, '<code>\\1</code>\\2')\n               .gsub(/^\\.\\.\\.?$/, '<code>\\0</code>')\n-              .gsub(%r{([\\[\\s|()>.]|^|\\]|&gt;)(\\.?([-a-zA-Z0-9:+=~@,/_^\\$\\\\\\*]+\\.{0,2})+)}, '\\1<code>\\2</code>')\n+              .gsub(%r{([\\[\\s|()>.]|^|\\]|&gt;)(\\.?([-a-zA-Z0-9:+=~@,/_^\\$\\\\\\*%]+\\.{0,2})+)}, '\\1<code>\\2</code>')\n               .gsub(/(&lt;[-a-zA-Z0-9.]+&gt;)/, '<em>\\1</em>')\n \n         else\ndiff --git a/Documentation/rev-list-options.adoc b/Documentation/rev-list-options.adoc\nindex ae8765644c87..d9665d82c8df 100644\n--- a/Documentation/rev-list-options.adoc\n+++ b/Documentation/rev-list-options.adoc\n@@ -6,60 +6,60 @@ special notations explained in the description, additional commit\n limiting may be applied.\n \n Using more options generally further limits the output (e.g.\n-`--since=<date1>` limits to commits newer than `<date1>`, and using it\n+`--since=<date1>` limits to commits newer than _<date1>_, and using it\n with `--grep=<pattern>` further limits to commits whose log message\n-has a line that matches `<pattern>`), unless otherwise noted.\n+has a line that matches _<pattern>_), unless otherwise noted.\n \n Note that these are applied before commit\n ordering and formatting options, such as `--reverse`.\n \n--<number>::\n--n <number>::\n---max-count=<number>::\n-\tLimit the number of commits to output.\n+`-<number>`::\n+`-n <number>`::\n+`--max-count=<number>`::\n+\tLimit the output to _<number>_ commits.\n \n---skip=<number>::\n-\tSkip 'number' commits before starting to show the commit output.\n+`--skip=<number>`::\n+\tSkip _<number>_ commits before starting to show the commit output.\n \n---since=<date>::\n---after=<date>::\n-\tShow commits more recent than a specific date.\n+`--since=<date>`::\n+`--after=<date>`::\n+\tShow commits more recent than _<date>_.\n \n---since-as-filter=<date>::\n-\tShow all commits more recent than a specific date. This visits\n+`--since-as-filter=<date>`::\n+\tShow all commits more recent than _<date>_. This visits\n \tall commits in the range, rather than stopping at the first commit which\n-\tis older than a specific date.\n+\tis older than _<date>_.\n \n---until=<date>::\n---before=<date>::\n-\tShow commits older than a specific date.\n+`--until=<date>`::\n+`--before=<date>`::\n+\tShow commits older than _<date>_.\n \n ifdef::git-rev-list[]\n---max-age=<timestamp>::\n---min-age=<timestamp>::\n+`--max-age=<timestamp>`::\n+`--min-age=<timestamp>`::\n \tLimit the commits output to specified time range.\n endif::git-rev-list[]\n \n---author=<pattern>::\n---committer=<pattern>::\n+`--author=<pattern>`::\n+`--committer=<pattern>`::\n \tLimit the commits output to ones with author/committer\n-\theader lines that match the specified pattern (regular\n-\texpression).  With more than one `--author=<pattern>`,\n-\tcommits whose author matches any of the given patterns are\n+\theader lines that match the _<pattern>_ regular\n+\texpression.  With more than one `--author=<pattern>`,\n+\tcommits whose author matches any of the _<pattern>_ are\n \tchosen (similarly for multiple `--committer=<pattern>`).\n \n---grep-reflog=<pattern>::\n+`--grep-reflog=<pattern>`::\n \tLimit the commits output to ones with reflog entries that\n-\tmatch the specified pattern (regular expression). With\n+\tmatch the _<pattern>_ regular expression. With\n \tmore than one `--grep-reflog`, commits whose reflog message\n \tmatches any of the given patterns are chosen.  It is an\n \terror to use this option unless `--walk-reflogs` is in use.\n \n---grep=<pattern>::\n+`--grep=<pattern>`::\n \tLimit the commits output to ones with a log message that\n-\tmatches the specified pattern (regular expression).  With\n+\tmatches the _<pattern>_ regular expression.  With\n \tmore than one `--grep=<pattern>`, commits whose message\n-\tmatches any of the given patterns are chosen (but see\n+\tmatches any of the _<pattern>_ are chosen (but see\n \t`--all-match`).\n ifndef::git-rev-list[]\n +\n@@ -67,35 +67,35 @@ When `--notes` is in effect, the message from the notes is\n matched as if it were part of the log message.\n endif::git-rev-list[]\n \n---all-match::\n+`--all-match`::\n \tLimit the commits output to ones that match all given `--grep`,\n \tinstead of ones that match at least one.\n \n---invert-grep::\n+`--invert-grep`::\n \tLimit the commits output to ones with a log message that do not\n-\tmatch the pattern specified with `--grep=<pattern>`.\n+\tmatch the _<pattern>_ specified with `--grep=<pattern>`.\n \n--i::\n---regexp-ignore-case::\n+`-i`::\n+`--regexp-ignore-case`::\n \tMatch the regular expression limiting patterns without regard to letter\n \tcase.\n \n---basic-regexp::\n+`--basic-regexp`::\n \tConsider the limiting patterns to be basic regular expressions;\n \tthis is the default.\n \n--E::\n---extended-regexp::\n+`-E`::\n+`--extended-regexp`::\n \tConsider the limiting patterns to be extended regular expressions\n \tinstead of the default basic regular expressions.\n \n--F::\n---fixed-strings::\n+`-F`::\n+`--fixed-strings`::\n \tConsider the limiting patterns to be fixed strings (don't interpret\n \tpattern as a regular expression).\n \n--P::\n---perl-regexp::\n+`-P`::\n+`--perl-regexp`::\n \tConsider the limiting patterns to be Perl-compatible regular\n \texpressions.\n +\n@@ -103,20 +103,20 @@ Support for these types of regular expressions is an optional\n compile-time dependency. If Git wasn't compiled with support for them\n providing this option will cause it to die.\n \n---remove-empty::\n+`--remove-empty`::\n \tStop when a given path disappears from the tree.\n \n---merges::\n+`--merges`::\n \tPrint only merge commits. This is exactly the same as `--min-parents=2`.\n \n---no-merges::\n+`--no-merges`::\n \tDo not print commits with more than one parent. This is\n \texactly the same as `--max-parents=1`.\n \n---min-parents=<number>::\n---max-parents=<number>::\n---no-min-parents::\n---no-max-parents::\n+`--min-parents=<number>`::\n+`--max-parents=<number>`::\n+`--no-min-parents`::\n+`--no-max-parents`::\n \tShow only commits which have at least (or at most) that many parent\n \tcommits. In particular, `--max-parents=1` is the same as `--no-merges`,\n \t`--min-parents=2` is the same as `--merges`.  `--max-parents=0`\n@@ -126,7 +126,7 @@ providing this option will cause it to die.\n again.  Equivalent forms are `--min-parents=0` (any commit has 0 or more\n parents) and `--max-parents=-1` (negative numbers denote no upper limit).\n \n---first-parent::\n+`--first-parent`::\n \tWhen finding commits to include, follow only the first\n \tparent commit upon seeing a merge commit.  This option\n \tcan give a better overview when viewing the evolution of\n@@ -141,14 +141,14 @@ This option also changes default diff format for merge commits\n to `first-parent`, see `--diff-merges=first-parent` for details.\n endif::git-log[]\n \n---exclude-first-parent-only::\n+`--exclude-first-parent-only`::\n \tWhen finding commits to exclude (with a '{caret}'), follow only\n \tthe first parent commit upon seeing a merge commit.\n \tThis can be used to find the set of changes in a topic branch\n \tfrom the point where it diverged from the remote branch, given\n \tthat arbitrary merges can be valid topic branch changes.\n \n---not::\n+`--not`::\n \tReverses the meaning of the '{caret}' prefix (or lack thereof)\n \tfor all following revision specifiers, up to the next `--not`.\n \tWhen used on the command line before --stdin, the revisions passed\n@@ -156,37 +156,37 @@ endif::git-log[]\n \tvia standard input, the revisions passed on the command line will\n \tnot be affected by it.\n \n---all::\n+`--all`::\n \tPretend as if all the refs in `refs/`, along with `HEAD`, are\n-\tlisted on the command line as '<commit>'.\n+\tlisted on the command line as _<commit>_.\n \n---branches[=<pattern>]::\n+`--branches[=<pattern>]`::\n \tPretend as if all the refs in `refs/heads` are listed\n-\ton the command line as '<commit>'. If '<pattern>' is given, limit\n-\tbranches to ones matching given shell glob. If pattern lacks '?',\n+\ton the command line as _<commit>_. If _<pattern>_ is given, limit\n+\tbranches to ones matching given shell glob. If _<pattern>_ lacks '?',\n \t'{asterisk}', or '[', '/{asterisk}' at the end is implied.\n \n---tags[=<pattern>]::\n+`--tags[=<pattern>]`::\n \tPretend as if all the refs in `refs/tags` are listed\n-\ton the command line as '<commit>'. If '<pattern>' is given, limit\n+\ton the command line as _<commit>_. If _<pattern>_ is given, limit\n \ttags to ones matching given shell glob. If pattern lacks '?', '{asterisk}',\n \tor '[', '/{asterisk}' at the end is implied.\n \n---remotes[=<pattern>]::\n+`--remotes[=<pattern>]`::\n \tPretend as if all the refs in `refs/remotes` are listed\n-\ton the command line as '<commit>'. If '<pattern>' is given, limit\n+\ton the command line as _<commit>_. If _<pattern>_ is given, limit\n \tremote-tracking branches to ones matching given shell glob.\n \tIf pattern lacks '?', '{asterisk}', or '[', '/{asterisk}' at the end is implied.\n \n---glob=<glob-pattern>::\n-\tPretend as if all the refs matching shell glob '<glob-pattern>'\n-\tare listed on the command line as '<commit>'. Leading 'refs/',\n+`--glob=<glob-pattern>`::\n+\tPretend as if all the refs matching shell glob _<glob-pattern>_\n+\tare listed on the command line as _<commit>_. Leading 'refs/',\n \tis automatically prepended if missing. If pattern lacks '?', '{asterisk}',\n \tor '[', '/{asterisk}' at the end is implied.\n \n---exclude=<glob-pattern>::\n+`--exclude=<glob-pattern>`::\n \n-\tDo not include refs matching '<glob-pattern>' that the next `--all`,\n+\tDo not include refs matching _<glob-pattern>_ that the next `--all`,\n \t`--branches`, `--tags`, `--remotes`, or `--glob` would otherwise\n \tconsider. Repetitions of this option accumulate exclusion patterns\n \tup to the next `--all`, `--branches`, `--tags`, `--remotes`, or\n@@ -199,7 +199,7 @@ respectively, and they must begin with `refs/` when applied to `--glob`\n or `--all`. If a trailing '/{asterisk}' is intended, it must be given\n explicitly.\n \n---exclude-hidden=[fetch|receive|uploadpack]::\n+`--exclude-hidden=(fetch|receive|uploadpack)`::\n \tDo not include refs that would be hidden by `git-fetch`,\n \t`git-receive-pack` or `git-upload-pack` by consulting the appropriate\n \t`fetch.hideRefs`, `receive.hideRefs` or `uploadpack.hideRefs`\n@@ -207,11 +207,11 @@ explicitly.\n \tlinkgit:git-config[1]). This option affects the next pseudo-ref option\n \t`--all` or `--glob` and is cleared after processing them.\n \n---reflog::\n+`--reflog`::\n \tPretend as if all objects mentioned by reflogs are listed on the\n-\tcommand line as `<commit>`.\n+\tcommand line as _<commit>_.\n \n---alternate-refs::\n+`--alternate-refs`::\n \tPretend as if all objects mentioned as ref tips of alternate\n \trepositories were listed on the command line. An alternate\n \trepository is any repository whose object directory is specified\n@@ -219,7 +219,7 @@ explicitly.\n \tbe modified by `core.alternateRefsCommand`, etc. See\n \tlinkgit:git-config[1].\n \n---single-worktree::\n+`--single-worktree`::\n \tBy default, all working trees will be examined by the\n \tfollowing options when there are more than one (see\n \tlinkgit:git-worktree[1]): `--all`, `--reflog` and\n@@ -227,19 +227,19 @@ explicitly.\n \tThis option forces them to examine the current working tree\n \tonly.\n \n---ignore-missing::\n+`--ignore-missing`::\n \tUpon seeing an invalid object name in the input, pretend as if\n \tthe bad input was not given.\n \n ifndef::git-rev-list[]\n---bisect::\n+`--bisect`::\n \tPretend as if the bad bisection ref `refs/bisect/bad`\n \twas listed and as if it was followed by `--not` and the good\n \tbisection refs `refs/bisect/good-*` on the command\n \tline.\n endif::git-rev-list[]\n \n---stdin::\n+`--stdin`::\n \tIn addition to getting arguments from the command line, read\n \tthem from standard input as well. This accepts commits and\n \tpseudo-options like `--all` and `--glob=`. When a `--` separator\n@@ -249,15 +249,15 @@ endif::git-rev-list[]\n \tinfluence any subsequent command line arguments.\n \n ifdef::git-rev-list[]\n---quiet::\n+`--quiet`::\n \tDon't print anything to standard output.  This form\n \tis primarily meant to allow the caller to\n \ttest the exit status to see if a range of objects is fully\n \tconnected (or not).  It is faster than redirecting stdout\n \tto `/dev/null` as the output does not have to be formatted.\n \n---disk-usage::\n---disk-usage=human::\n+`--disk-usage`::\n+`--disk-usage=human`::\n \tSuppress normal output; instead, print the sum of the bytes used\n \tfor on-disk storage by the selected commits or objects. This is\n \tequivalent to piping the output into `git cat-file\n@@ -269,11 +269,11 @@ ifdef::git-rev-list[]\n \tin human-readable string(e.g. 12.24 Kib, 3.50 Mib).\n endif::git-rev-list[]\n \n---cherry-mark::\n+`--cherry-mark`::\n \tLike `--cherry-pick` (see below) but mark equivalent commits\n \twith `=` rather than omitting them, and inequivalent ones with `+`.\n \n---cherry-pick::\n+`--cherry-pick`::\n \tOmit any commit that introduces the same change as\n \tanother commit on the ``other side'' when the set of\n \tcommits are limited with symmetric difference.\n@@ -286,8 +286,8 @@ cherry-picked from the other branch (for example, ``3rd on b'' may be\n cherry-picked from branch A). With this option, such pairs of commits are\n excluded from the output.\n \n---left-only::\n---right-only::\n+`--left-only`::\n+`--right-only`::\n \tList only commits on the respective side of a symmetric difference,\n \ti.e. only those which would be marked `<` resp. `>` by\n \t`--left-right`.\n@@ -298,20 +298,20 @@ commits from `B` which are in `A` or are patch-equivalent to a commit in\n More precisely, `--cherry-pick --right-only --no-merges` gives the exact\n list.\n \n---cherry::\n+`--cherry`::\n \tA synonym for `--right-only --cherry-mark --no-merges`; useful to\n \tlimit the output to the commits on our side and mark those that\n \thave been applied to the other side of a forked history with\n \t`git log --cherry upstream...mybranch`, similar to\n \t`git cherry upstream mybranch`.\n \n--g::\n---walk-reflogs::\n+`-g`::\n+`--walk-reflogs`::\n \tInstead of walking the commit ancestry chain, walk\n \treflog entries from the most recent one to older ones.\n \tWhen this option is used you cannot specify commits to\n-\texclude (that is, '{caret}commit', 'commit1..commit2',\n-\tand 'commit1\\...commit2' notations cannot be used).\n+\texclude (that is, `^<commit>`, `<commit1>..<commit2>`,\n+\tand `<commit1>...<commit2>` notations cannot be used).\n +\n With `--pretty` format other than `oneline` and `reference` (for obvious reasons),\n this causes the output to have two extra lines of information\n@@ -340,29 +340,29 @@ See also linkgit:git-reflog[1].\n +\n Under `--pretty=reference`, this information will not be shown at all.\n \n---merge::\n+`--merge`::\n \tShow commits touching conflicted paths in the range `HEAD...<other>`,\n \twhere `<other>` is the first existing pseudoref in `MERGE_HEAD`,\n \t`CHERRY_PICK_HEAD`, `REVERT_HEAD` or `REBASE_HEAD`. Only works\n \twhen the index has unmerged entries. This option can be used to show\n \trelevant commits when resolving conflicts from a 3-way merge.\n \n---boundary::\n+`--boundary`::\n \tOutput excluded boundary commits. Boundary commits are\n \tprefixed with `-`.\n \n ifdef::git-rev-list[]\n---use-bitmap-index::\n+`--use-bitmap-index`::\n \n \tTry to speed up the traversal using the pack bitmap index (if\n \tone is available). Note that when traversing with `--objects`,\n \ttrees and blobs will not have their associated path printed.\n \n---progress=<header>::\n+`--progress=<header>`::\n \tShow progress reports on stderr as objects are considered. The\n \t`<header>` text will be printed with each progress update.\n \n--z::\n+`-z`::\n \tInstead of being newline-delimited, each outputted object and its\n \taccompanying metadata is delimited using NUL bytes. Output is printed\n \tin the following form:\n@@ -397,56 +397,56 @@ is how to do it, as there are various strategies to simplify the history.\n \n The following options select the commits to be shown:\n \n-<paths>::\n+`<paths>`::\n \tCommits modifying the given <paths> are selected.\n \n---simplify-by-decoration::\n+`--simplify-by-decoration`::\n \tCommits that are referred by some branch or tag are selected.\n \n Note that extra commits can be shown to give a meaningful history.\n \n The following options affect the way the simplification is performed:\n \n-Default mode::\n+`Default mode`::\n \tSimplifies the history to the simplest history explaining the\n \tfinal state of the tree. Simplest because it prunes some side\n \tbranches if the end result is the same (i.e. merging branches\n \twith the same content)\n \n---show-pulls::\n+`--show-pulls`::\n \tInclude all commits from the default mode, but also any merge\n \tcommits that are not TREESAME to the first parent but are\n \tTREESAME to a later parent. This mode is helpful for showing\n \tthe merge commits that \"first introduced\" a change to a branch.\n \n---full-history::\n+`--full-history`::\n \tSame as the default mode, but does not prune some history.\n \n---dense::\n+`--dense`::\n \tOnly the selected commits are shown, plus some to have a\n \tmeaningful history.\n \n---sparse::\n+`--sparse`::\n \tAll commits in the simplified history are shown.\n \n---simplify-merges::\n+`--simplify-merges`::\n \tAdditional option to `--full-history` to remove some needless\n \tmerges from the resulting history, as there are no selected\n \tcommits contributing to this merge.\n \n---ancestry-path[=<commit>]::\n-\tWhen given a range of commits to display (e.g. 'commit1..commit2'\n-\tor 'commit2 {caret}commit1'), and a commit <commit> in that range,\n+`--ancestry-path[=<commit>]`::\n+\tWhen given a range of commits to display (e.g. `<commit1>..<commit2>`\n+\tor `<commit2> ^<commit1>`), and a commit _<commit>_ in that range,\n \tonly display commits in that range\n-\tthat are ancestors of <commit>, descendants of <commit>, or\n-\t<commit> itself.  If no commit is specified, use 'commit1' (the\n-\texcluded part of the range) as <commit>.  Can be passed multiple\n+\tthat are ancestors of _<commit>_, descendants of _<commit>_, or\n+\t_<commit>_ itself.  If no commit is specified, use _<commit1>_ (the\n+\texcluded part of the range) as _<commit>_.  Can be passed multiple\n \ttimes; if so, a commit is included if it is any of the commits\n \tgiven or if it is an ancestor or descendant of one of them.\n \n A more detailed explanation follows.\n \n-Suppose you specified `foo` as the <paths>.  We shall call commits\n+Suppose you specified `foo` as the _<paths>_.  We shall call commits\n that modify `foo` !TREESAME, and the rest TREESAME.  (In a diff\n filtered for `foo`, they look different and equal, respectively.)\n \n@@ -466,22 +466,22 @@ The horizontal line of history A---Q is taken to be the first parent of\n each merge.  The commits are:\n \n * `I` is the initial commit, in which `foo` exists with contents\n-  ``asdf'', and a file `quux` exists with contents ``quux''. Initial\n+  `asdf`, and a file `quux` exists with contents `quux`. Initial\n   commits are compared to an empty tree, so `I` is !TREESAME.\n \n-* In `A`, `foo` contains just ``foo''.\n+* In `A`, `foo` contains just `foo`.\n \n * `B` contains the same change as `A`.  Its merge `M` is trivial and\n   hence TREESAME to all parents.\n \n-* `C` does not change `foo`, but its merge `N` changes it to ``foobar'',\n+* `C` does not change `foo`, but its merge `N` changes it to `foobar`,\n   so it is not TREESAME to any parent.\n \n-* `D` sets `foo` to ``baz''. Its merge `O` combines the strings from\n-  `N` and `D` to ``foobarbaz''; i.e., it is not TREESAME to any parent.\n+* `D` sets `foo` to `baz`. Its merge `O` combines the strings from\n+  `N` and `D` to `foobarbaz`; i.e., it is not TREESAME to any parent.\n \n-* `E` changes `quux` to ``xyzzy'', and its merge `P` combines the\n-  strings to ``quux xyzzy''. `P` is TREESAME to `O`, but not to `E`.\n+* `E` changes `quux` to `xyzzy`, and its merge `P` combines the\n+  strings to `quux xyzzy`. `P` is TREESAME to `O`, but not to `E`.\n \n * `X` is an independent root commit that added a new file `side`, and `Y`\n   modified it. `Y` is TREESAME to `X`. Its merge `Q` added `side` to `P`, and\n@@ -517,7 +517,7 @@ Parent/child relations are only visible with `--parents`, but that does\n not affect the commits selected in default mode, so we have shown the\n parent lines.\n \n---full-history without parent rewriting::\n+`--full-history` without parent rewriting::\n \tThis mode differs from the default in one point: always follow\n \tall parents of a merge, even if it is TREESAME to one of them.\n \tEven if more than one side of the merge has commits that are\n@@ -536,7 +536,7 @@ Note that without parent rewriting, it is not really possible to talk\n about the parent/child relationships between the commits, so we show\n them disconnected.\n \n---full-history with parent rewriting::\n+`--full-history` with parent rewriting::\n \tOrdinary commits are only included if they are !TREESAME\n \t(though this can be changed, see `--sparse` below).\n +\n@@ -560,18 +560,18 @@ rewritten to contain `E`'s parent `I`.  The same happened for `C` and\n In addition to the above settings, you can change whether TREESAME\n affects inclusion:\n \n---dense::\n+`--dense`::\n \tCommits that are walked are included if they are not TREESAME\n \tto any parent.\n \n---sparse::\n+`--sparse`::\n \tAll commits that are walked are included.\n +\n Note that without `--full-history`, this still simplifies merges: if\n one of the parents is TREESAME, we follow only that one, so the other\n sides of the merge are never walked.\n \n---simplify-merges::\n+`--simplify-merges`::\n \tFirst, build a history graph in the same way that\n \t`--full-history` with parent rewriting does (see above).\n +\n@@ -618,9 +618,9 @@ Note the major differences in `N`, `P`, and `Q` over `--full-history`:\n \n There is another simplification mode available:\n \n---ancestry-path[=<commit>]::\n+`--ancestry-path[=<commit>]`::\n \tLimit the displayed commits to those which are an ancestor of\n-\t<commit>, or which are a descendant of <commit>, or are <commit>\n+\t_<commit>_, or which are a descendant of _<commit>_, or are _<commit>_\n \titself.\n +\n As an example use case, consider the following commit history:\n@@ -636,15 +636,15 @@ As an example use case, consider the following commit history:\n A regular 'D..M' computes the set of commits that are ancestors of `M`,\n but excludes the ones that are ancestors of `D`. This is useful to see\n what happened to the history leading to `M` since `D`, in the sense\n-that ``what does `M` have that did not exist in `D`''. The result in this\n+that \"what does `M` have that did not exist in `D`\". The result in this\n example would be all the commits, except `A` and `B` (and `D` itself,\n of course).\n +\n When we want to find out what commits in `M` are contaminated with the\n bug introduced by `D` and need fixing, however, we might want to view\n-only the subset of 'D..M' that are actually descendants of `D`, i.e.\n+only the subset of `D..M` that are actually descendants of `D`, i.e.\n excluding `C` and `K`. This is exactly what the `--ancestry-path`\n-option does. Applied to the 'D..M' range, it results in:\n+option does. Applied to the `D..M` range, it results in:\n +\n -----------------------------------------------------------------------\n \t\tE-------F\n@@ -655,7 +655,7 @@ option does. Applied to the 'D..M' range, it results in:\n -----------------------------------------------------------------------\n +\n We can also use `--ancestry-path=D` instead of `--ancestry-path` which\n-means the same thing when applied to the 'D..M' range but is just more\n+means the same thing when applied to the `D..M` range but is just more\n explicit.\n +\n If we instead are interested in a given topic within this range, and all\n@@ -770,7 +770,7 @@ into the important branch. This commit may have information about why\n the change `X` came to override the changes from `A` and `B` in its\n commit message.\n \n---show-pulls::\n+`--show-pulls`::\n \tIn addition to the commits shown in the default history, show\n \teach merge commit that is not TREESAME to its first parent but\n \tis TREESAME to a later parent.\n@@ -819,7 +819,7 @@ ifdef::git-rev-list[]\n Bisection Helpers\n ~~~~~~~~~~~~~~~~~\n \n---bisect::\n+`--bisect`::\n \tLimit output to the one commit object which is roughly halfway between\n \tincluded and excluded commits. Note that the bad bisection ref\n \t`refs/bisect/bad` is added to the included commits (if it\n@@ -843,7 +843,7 @@ introduces a regression is thus reduced to a binary search: repeatedly\n generate and test new 'midpoint's until the commit chain is of length\n one.\n \n---bisect-vars::\n+`--bisect-vars`::\n \tThis calculates the same as `--bisect`, except that refs in\n \t`refs/bisect/` are not used, and except that this outputs\n \ttext ready to be eval'ed by the shell. These lines will assign the\n@@ -855,7 +855,7 @@ one.\n \t`bisect_bad`, and the number of commits we are bisecting right now to\n \t`bisect_all`.\n \n---bisect-all::\n+`--bisect-all`::\n \tThis outputs all the commit objects between the included and excluded\n \tcommits, ordered by their distance to the included and excluded\n \tcommits. Refs in `refs/bisect/` are not used. The farthest\n@@ -878,15 +878,15 @@ Commit Ordering\n \n By default, the commits are shown in reverse chronological order.\n \n---date-order::\n+`--date-order`::\n \tShow no parents before all of its children are shown, but\n \totherwise show commits in the commit timestamp order.\n \n---author-date-order::\n+`--author-date-order`::\n \tShow no parents before all of its children are shown, but\n \totherwise show commits in the author timestamp order.\n \n---topo-order::\n+`--topo-order`::\n \tShow no parents before all of its children are shown, and\n \tavoid showing commits on multiple lines of history\n \tintermixed.\n@@ -910,8 +910,8 @@ With `--topo-order`, they would show 8 6 5 3 7 4 2 1 (or 8 7 4 2 6 5\n avoid showing the commits from two parallel development track mixed\n together.\n \n---reverse::\n-\tOutput the commits chosen to be shown (see Commit Limiting\n+`--reverse`::\n+\tOutput the commits chosen to be shown (see 'Commit Limiting'\n \tsection above) in reverse order. Cannot be combined with\n \t`--walk-reflogs`.\n endif::git-shortlog[]\n@@ -923,39 +923,39 @@ Object Traversal\n These options are mostly targeted for packing of Git repositories.\n \n ifdef::git-rev-list[]\n---objects::\n+`--objects`::\n \tPrint the object IDs of any object referenced by the listed\n-\tcommits.  `--objects foo ^bar` thus means ``send me\n+\tcommits.  `--objects foo ^bar` thus means \"send me\n \tall object IDs which I need to download if I have the commit\n-\tobject _bar_ but not _foo_''. See also `--object-names` below.\n+\tobject `bar` but not `foo`\". See also `--object-names` below.\n \n---in-commit-order::\n+`--in-commit-order`::\n \tPrint tree and blob ids in order of the commits. The tree\n \tand blob ids are printed after they are first referenced\n \tby a commit.\n \n---objects-edge::\n+`--objects-edge`::\n \tSimilar to `--objects`, but also print the IDs of excluded\n-\tcommits prefixed with a ``-'' character.  This is used by\n+\tcommits prefixed with a \"`-`\" character.  This is used by\n \tlinkgit:git-pack-objects[1] to build a ``thin'' pack, which records\n \tobjects in deltified form based on objects contained in these\n \texcluded commits to reduce network traffic.\n \n---objects-edge-aggressive::\n+`--objects-edge-aggressive`::\n \tSimilar to `--objects-edge`, but it tries harder to find excluded\n \tcommits at the cost of increased time.  This is used instead of\n \t`--objects-edge` to build ``thin'' packs for shallow repositories.\n \n---indexed-objects::\n+`--indexed-objects`::\n \tPretend as if all trees and blobs used by the index are listed\n \ton the command line.  Note that you probably want to use\n \t`--objects`, too.\n \n---unpacked::\n+`--unpacked`::\n \tOnly useful with `--objects`; print the object IDs that are not\n \tin packs.\n \n---object-names::\n+`--object-names`::\n \tOnly useful with `--objects`; print the names of the object IDs\n \tthat are found. This is the default behavior. Note that the\n \t\"name\" of each object is ambiguous, and mostly intended as a\n@@ -964,52 +964,52 @@ ifdef::git-rev-list[]\n \tto remove newlines; and if an object would appear multiple times\n \twith different names, only one name is shown.\n \n---no-object-names::\n+`--no-object-names`::\n \tOnly useful with `--objects`; does not print the names of the object\n \tIDs that are found. This inverts `--object-names`. This flag allows\n \tthe output to be more easily parsed by commands such as\n \tlinkgit:git-cat-file[1].\n \n---filter=<filter-spec>::\n+`--filter=<filter-spec>`::\n \tOnly useful with one of the `--objects*`; omits objects (usually\n-\tblobs) from the list of printed objects.  The '<filter-spec>'\n+\tblobs) from the list of printed objects.  The _<filter-spec>_\n \tmay be one of the following:\n +\n-The form '--filter=blob:none' omits all blobs.\n+The form `--filter=blob:none` omits all blobs.\n +\n-The form '--filter=blob:limit=<n>[kmg]' omits blobs of size at least n\n-bytes or units.  n may be zero.  The suffixes k, m, and g can be used\n-to name units in KiB, MiB, or GiB.  For example, 'blob:limit=1k'\n+The form `--filter=blob:limit=<n>[kmg]` omits blobs of size at least _<n>_\n+bytes or units.  _<n>_ may be zero.  The suffixes `k`, `m`, and `g` can be used\n+to name units in KiB, MiB, or GiB.  For example, `blob:limit=1k`\n is the same as 'blob:limit=1024'.\n +\n-The form '--filter=object:type=(tag|commit|tree|blob)' omits all objects\n+The form `--filter=object:type=(tag|commit|tree|blob)` omits all objects\n which are not of the requested type.\n +\n-The form '--filter=sparse:oid=<blob-ish>' uses a sparse-checkout\n-specification contained in the blob (or blob-expression) '<blob-ish>'\n+The form `--filter=sparse:oid=<blob-ish>` uses a sparse-checkout\n+specification contained in the blob (or blob-expression) _<blob-ish>_\n to omit blobs that would not be required for a sparse checkout on\n the requested refs.\n +\n-The form '--filter=tree:<depth>' omits all blobs and trees whose depth\n-from the root tree is >= <depth> (minimum depth if an object is located\n-at multiple depths in the commits traversed). <depth>=0 will not include\n+The form `--filter=tree:<depth>` omits all blobs and trees whose depth\n+from the root tree is >= _<depth>_ (minimum depth if an object is located\n+at multiple depths in the commits traversed). _<depth>_=0 will not include\n any trees or blobs unless included explicitly in the command-line (or\n-standard input when --stdin is used). <depth>=1 will include only the\n+standard input when `--stdin` is used). _<depth>_=1 will include only the\n tree and blobs which are referenced directly by a commit reachable from\n-<commit> or an explicitly-given object. <depth>=2 is like <depth>=1\n+_<commit>_ or an explicitly-given object. _<depth>_=2 is like <depth>=1\n while also including trees and blobs one more level removed from an\n explicitly-given commit or tree.\n +\n-Note that the form '--filter=sparse:path=<path>' that wants to read\n+Note that the form `--filter=sparse:path=<path>` that wants to read\n from an arbitrary path on the filesystem has been dropped for security\n reasons.\n +\n-Multiple '--filter=' flags can be specified to combine filters. Only\n+Multiple `--filter=` flags can be specified to combine filters. Only\n objects which are accepted by every filter are included.\n +\n-The form '--filter=combine:<filter1>+<filter2>+...<filterN>' can also be\n+The form `--filter=combine:<filter1>+<filter2>+...<filterN>` can also be\n used to combined several filters, but this is harder than just repeating\n-the '--filter' flag and is usually not necessary. Filters are joined by\n+the `--filter` flag and is usually not necessary. Filters are joined by\n '{plus}' and individual filters are %-encoded (i.e. URL-encoded).\n Besides the '{plus}' and '%' characters, the following characters are\n reserved and also must be encoded: `~!@#$^&*()[]{}\\;\",<>?`+&#39;&#96;+\n@@ -1017,52 +1017,52 @@ as well as all characters with ASCII code &lt;= `0x20`, which includes\n space and newline.\n +\n Other arbitrary characters can also be encoded. For instance,\n-'combine:tree:3+blob:none' and 'combine:tree%3A3+blob%3Anone' are\n+`combine:tree:3+blob:none` and `combine:tree%3A3+blob%3Anone` are\n equivalent.\n \n---no-filter::\n+`--no-filter`::\n \tTurn off any previous `--filter=` argument.\n \n---filter-provided-objects::\n+`--filter-provided-objects`::\n \tFilter the list of explicitly provided objects, which would otherwise\n \talways be printed even if they did not match any of the filters. Only\n \tuseful with `--filter=`.\n \n---filter-print-omitted::\n+`--filter-print-omitted`::\n \tOnly useful with `--filter=`; prints a list of the objects omitted\n \tby the filter.  Object IDs are prefixed with a ``~'' character.\n \n---missing=<missing-action>::\n+`--missing=<missing-action>`::\n \tA debug option to help with future \"partial clone\" development.\n \tThis option specifies how missing objects are handled.\n +\n-The form '--missing=error' requests that rev-list stop with an error if\n+The form `--missing=error` requests that rev-list stop with an error if\n a missing object is encountered.  This is the default action.\n +\n-The form '--missing=allow-any' will allow object traversal to continue\n+The form `--missing=allow-any` will allow object traversal to continue\n if a missing object is encountered.  Missing objects will silently be\n omitted from the results.\n +\n-The form '--missing=allow-promisor' is like 'allow-any', but will only\n+The form `--missing=allow-promisor` is like `allow-any`, but will only\n allow object traversal to continue for EXPECTED promisor missing objects.\n Unexpected missing objects will raise an error.\n +\n-The form '--missing=print' is like 'allow-any', but will also print a\n+The form `--missing=print` is like `allow-any`, but will also print a\n list of the missing objects.  Object IDs are prefixed with a ``?'' character.\n +\n-The form '--missing=print-info' is like 'print', but will also print additional\n+The form `--missing=print-info` is like `print`, but will also print additional\n information about the missing object inferred from its containing object. The\n information is all printed on the same line with the missing object ID in the\n form: `?<oid> [<token>=<value>]...`. The `<token>=<value>` pairs containing\n-additional information are separated from each other by a SP. The value is\n-encoded in a token specific fashion, but SP or LF contained in value are always\n+additional information are separated from each other by a _SP_. The value is\n+encoded in a token specific fashion, but _SP_ or _LF_ contained in value are always\n expected to be represented in such a way that the resulting encoded value does\n not have either of these two problematic bytes. Each `<token>=<value>` may be\n one of the following:\n +\n --\n * The `path=<path>` shows the path of the missing object inferred from a\n-  containing object. A path containing SP or special characters is enclosed in\n+  containing object. A path containing _SP_ or special characters is enclosed in\n   double-quotes in the C style as needed.\n +\n * The `type=<type>` shows the type of the missing object inferred from a\n@@ -1073,7 +1073,7 @@ If some tips passed to the traversal are missing, they will be\n considered as missing too, and the traversal will ignore them. In case\n we cannot get their Object ID though, an error will be raised.\n \n---exclude-promisor-objects::\n+`--exclude-promisor-objects`::\n \t(For internal use only.)  Prefilter object traversal at\n \tpromisor boundary.  This is used with partial clone.  This is\n \tstronger than `--missing=allow-promisor` because it limits the\n@@ -1081,7 +1081,7 @@ we cannot get their Object ID though, an error will be raised.\n \tobjects.\n endif::git-rev-list[]\n \n---no-walk[=(sorted|unsorted)]::\n+`--no-walk[=(sorted|unsorted)]`::\n \tOnly show the given commits, but do not traverse their ancestors.\n \tThis has no effect if a range is specified. If the argument\n \t`unsorted` is given, the commits are shown in the order they were\n@@ -1090,7 +1090,7 @@ endif::git-rev-list[]\n \tby commit time.\n \tCannot be combined with `--graph`.\n \n---do-walk::\n+`--do-walk`::\n \tOverrides a previous `--no-walk`.\n endif::git-shortlog[]\n \n@@ -1111,10 +1111,10 @@ endif::git-rev-list[]\n \n include::pretty-options.adoc[]\n \n---relative-date::\n+`--relative-date`::\n \tSynonym for `--date=relative`.\n \n---date=<format>::\n+`--date=<format>`::\n \tOnly takes effect for dates shown in human-readable format, such\n \tas when using `--pretty`. `log.date` config variable sets a default\n \tvalue for the log command's `--date` option. By default, dates\n@@ -1164,12 +1164,12 @@ omitted.\n 1970).  As with `--raw`, this is always in UTC and therefore `-local`\n has no effect.\n \n-`--date=format:...` feeds the format `...` to your system `strftime`,\n-except for %s, %z, and %Z, which are handled internally.\n+`--date=format:<format>` feeds the _<format>_ to your system `strftime`,\n+except for `%s`, `%z`, and `%Z`, which are handled internally.\n Use `--date=format:%c` to show the date in your system locale's\n-preferred format.  See the `strftime` manual for a complete list of\n+preferred format.  See the `strftime`(3) manual for a complete list of\n format placeholders. When using `-local`, the correct syntax is\n-`--date=format-local:...`.\n+`--date=format-local:<format>`.\n \n `--date=default` is the default format, and is based on ctime(3)\n output.  It shows a single line with three-letter day of the week,\n@@ -1179,33 +1179,33 @@ the local time zone is used, e.g. `Thu Jan 1 00:00:00 1970 +0000`.\n --\n \n ifdef::git-rev-list[]\n---header::\n+`--header`::\n \tPrint the contents of the commit in raw-format; each record is\n \tseparated with a NUL character.\n \n---no-commit-header::\n+`--no-commit-header`::\n \tSuppress the header line containing \"commit\" and the object ID printed before\n \tthe specified format.  This has no effect on the built-in formats; only custom\n \tformats are affected.\n \n---commit-header::\n+`--commit-header`::\n \tOverrides a previous `--no-commit-header`.\n endif::git-rev-list[]\n \n---parents::\n+`--parents`::\n \tPrint also the parents of the commit (in the form \"commit parent...\").\n \tAlso enables parent rewriting, see 'History Simplification' above.\n \n---children::\n+`--children`::\n \tPrint also the children of the commit (in the form \"commit child...\").\n \tAlso enables parent rewriting, see 'History Simplification' above.\n \n ifdef::git-rev-list[]\n---timestamp::\n+`--timestamp`::\n \tPrint the raw commit timestamp.\n endif::git-rev-list[]\n \n---left-right::\n+`--left-right`::\n \tMark which side of a symmetric difference a commit is reachable from.\n \tCommits from the left side are prefixed with `<` and those from\n \tthe right with `>`.  If combined with `--boundary`, those\n@@ -1234,7 +1234,7 @@ you would get an output like this:\n \t-xxxxxxx... 1st on a\n -----------------------------------------------------------------------\n \n---graph::\n+`--graph`::\n \tDraw a text-based graphical representation of the commit history\n \ton the left hand side of the output.  This may cause extra lines\n \tto be printed in between commits, in order for the graph history\n@@ -1246,15 +1246,15 @@ This enables parent rewriting, see 'History Simplification' above.\n This implies the `--topo-order` option by default, but the\n `--date-order` option may also be specified.\n \n---show-linear-break[=<barrier>]::\n-\tWhen --graph is not used, all history branches are flattened\n+`--show-linear-break[=<barrier>]`::\n+\tWhen `--graph` is not used, all history branches are flattened\n \twhich can make it hard to see that the two consecutive commits\n \tdo not belong to a linear branch. This option puts a barrier\n-\tin between them in that case. If `<barrier>` is specified, it\n+\tin between them in that case. If _<barrier>_ is specified, it\n \tis the string that will be shown instead of the default one.\n \n ifdef::git-rev-list[]\n---count::\n+`--count`::\n \tPrint a number stating how many commits would have been\n \tlisted, and suppress all other output.  When used together\n \twith `--left-right`, instead print the counts for left and\n-- \ngitgitgadget\n\n"},{"id":"520886","messageId":"d5490f7d86895bd655bdabff48405909f3ce3984.1751203241.git.gitgitgadget@gmail.com","threadId":"63603","inReplyTo":"pull.1933.v2.git.1751203241.gitgitgadget@gmail.com","subject":"[PATCH v2 7/9] doc: git-log: convert pretty formats to new doc format","fromName":"Jean-Noël Avila via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2025-06-29T13:20:39Z","receivedAt":"2025-06-29T13:20:51Z","isPatch":true,"sender":{"key":"jn.avila@free.fr","avatar":"https://avatars.githubusercontent.com/u/156172?v=4"},"body":"From: =?UTF-8?q?Jean-No=C3=ABl=20Avila?= <jn.avila@free.fr>\n\n- Use _<placeholder>_ instead of <placeholder> in the description\n- Use `backticks` for keywords and more complex option\ndescriptions. The new rendering engine will apply synopsis rules to\nthese spans.\n\nFor all the formats in the form of %(foo), the formatting needs to be\nheavier because we not want the parentheses to be rendered as syntax\nelements,but as keywords, i.e. we need to circumvent the syntax highlighting\nof synopsis.  In this particular case, this requires the heavy escaping of\nthe parts that contain parentheses with ++.\n\nSigned-off-by: Jean-Noël Avila <jn.avila@free.fr>\n---\n Documentation/pretty-formats.adoc | 283 +++++++++++++++---------------\n 1 file changed, 143 insertions(+), 140 deletions(-)\n\ndiff --git a/Documentation/pretty-formats.adoc b/Documentation/pretty-formats.adoc\nindex 07475de8c337..9ed0417fc811 100644\n--- a/Documentation/pretty-formats.adoc\n+++ b/Documentation/pretty-formats.adoc\n@@ -2,11 +2,11 @@ PRETTY FORMATS\n --------------\n \n If the commit is a merge, and if the pretty-format\n-is not 'oneline', 'email' or 'raw', an additional line is\n-inserted before the 'Author:' line.  This line begins with\n+is not `oneline`, `email` or `raw`, an additional line is\n+inserted before the `Author:` line.  This line begins with\n \"Merge: \" and the hashes of ancestral commits are printed,\n separated by spaces.  Note that the listed commits may not\n-necessarily be the list of the *direct* parent commits if you\n+necessarily be the list of the 'direct' parent commits if you\n have limited your view of history: for example, if you are\n only interested in changes related to a certain directory or\n file.\n@@ -14,24 +14,24 @@ file.\n There are several built-in formats, and you can define\n additional formats by setting a pretty.<name>\n config option to either another format name, or a\n-'format:' string, as described below (see\n+`format:` string, as described below (see\n linkgit:git-config[1]). Here are the details of the\n built-in formats:\n \n-* 'oneline'\n+* `oneline`\n \n \t  <hash> <title-line>\n +\n This is designed to be as compact as possible.\n \n-* 'short'\n+* `short`\n \n \t  commit <hash>\n \t  Author: <author>\n \n \t      <title-line>\n \n-* 'medium'\n+* `medium`\n \n \t  commit <hash>\n \t  Author: <author>\n@@ -41,7 +41,7 @@ This is designed to be as compact as possible.\n \n \t      <full-commit-message>\n \n-* 'full'\n+* `full`\n \n \t  commit <hash>\n \t  Author: <author>\n@@ -51,7 +51,7 @@ This is designed to be as compact as possible.\n \n \t      <full-commit-message>\n \n-* 'fuller'\n+* `fuller`\n \n \t  commit <hash>\n \t  Author:     <author>\n@@ -63,18 +63,18 @@ This is designed to be as compact as possible.\n \n \t       <full-commit-message>\n \n-* 'reference'\n+* `reference`\n \n \t  <abbrev-hash> (<title-line>, <short-author-date>)\n +\n This format is used to refer to another commit in a commit message and\n-is the same as `--pretty='format:%C(auto)%h (%s, %ad)'`.  By default,\n+is the same as ++--pretty=\\'format:%C(auto)%h (%s, %ad)'++.  By default,\n the date is formatted with `--date=short` unless another `--date` option\n is explicitly specified.  As with any `format:` with format\n placeholders, its output is not affected by other options like\n `--decorate` and `--walk-reflogs`.\n \n-* 'email'\n+* `email`\n \n \t  From <hash> <date>\n \t  From: <author>\n@@ -83,30 +83,30 @@ placeholders, its output is not affected by other options like\n \n \t  <full-commit-message>\n \n-* 'mboxrd'\n+* `mboxrd`\n +\n-Like 'email', but lines in the commit message starting with \"From \"\n+Like `email`, but lines in the commit message starting with \"From \"\n (preceded by zero or more \">\") are quoted with \">\" so they aren't\n confused as starting a new commit.\n \n-* 'raw'\n+* `raw`\n +\n-The 'raw' format shows the entire commit exactly as\n+The `raw` format shows the entire commit exactly as\n stored in the commit object.  Notably, the hashes are\n-displayed in full, regardless of whether --abbrev or\n---no-abbrev are used, and 'parents' information show the\n+displayed in full, regardless of whether `--abbrev` or\n+`--no-abbrev` are used, and 'parents' information show the\n true parent commits, without taking grafts or history\n simplification into account. Note that this format affects the way\n commits are displayed, but not the way the diff is shown e.g. with\n `git log --raw`. To get full object names in a raw diff format,\n use `--no-abbrev`.\n \n-* 'format:<format-string>'\n+* `format:<format-string>`\n +\n-The 'format:<format-string>' format allows you to specify which information\n+The `format:<format-string>` format allows you to specify which information\n you want to show. It works a little bit like printf format,\n-with the notable exception that you get a newline with '%n'\n-instead of '\\n'.\n+with the notable exception that you get a newline with `%n`\n+instead of `\\n`.\n +\n E.g, 'format:\"The author of %h was %an, %ar%nThe title was >>%s<<%n\"'\n would show something like this:\n@@ -120,158 +120,161 @@ The title was >>t4119: test autocomputing -p<n> for traditional diff input.<<\n The placeholders are:\n \n - Placeholders that expand to a single literal character:\n-'%n':: newline\n-'%%':: a raw '%'\n-'%x00':: '%x' followed by two hexadecimal digits is replaced with a\n+++%n++:: newline\n+++%%++:: a raw ++%++\n+++%x00++:: ++%x++ followed by two hexadecimal digits is replaced with a\n \t byte with the hexadecimal digits' value (we will call this\n \t \"literal formatting code\" in the rest of this document).\n \n - Placeholders that affect formatting of later placeholders:\n-'%Cred':: switch color to red\n-'%Cgreen':: switch color to green\n-'%Cblue':: switch color to blue\n-'%Creset':: reset color\n-'%C(...)':: color specification, as described under Values in the\n+++%Cred++:: switch color to red\n+++%Cgreen++:: switch color to green\n+++%Cblue++:: switch color to blue\n+++%Creset++:: reset color\n+++%C(++_<spec>_++)++:: color specification, as described under Values in the\n \t    \"CONFIGURATION FILE\" section of linkgit:git-config[1].  By\n \t    default, colors are shown only when enabled for log output\n \t    (by `color.diff`, `color.ui`, or `--color`, and respecting\n \t    the `auto` settings of the former if we are going to a\n-\t    terminal). `%C(auto,...)` is accepted as a historical\n-\t    synonym for the default (e.g., `%C(auto,red)`). Specifying\n-\t    `%C(always,...)` will show the colors even when color is\n+\t    terminal). ++%C(auto,++_<spec>_++)++ is accepted as a historical\n+\t    synonym for the default (e.g., ++%C(auto,red)++). Specifying\n+\t    ++%C(always,++_<spec>_++)++ will show the colors even when color is\n \t    not otherwise enabled (though consider just using\n-\t    `--color=always` to enable color for the whole output,\n+\t    `--color=always` to enable color for the  whole output,\n \t    including this format and anything else git might color).\n-\t    `auto` alone (i.e. `%C(auto)`) will turn on auto coloring\n+\t    `auto` alone (i.e. ++%C(auto)++) will turn on auto coloring\n \t    on the next placeholders until the color is switched\n \t    again.\n-'%m':: left (`<`), right (`>`) or boundary (`-`) mark\n-'%w([<w>[,<i1>[,<i2>]]])':: switch line wrapping, like the -w option of\n+++%m++:: left (`<`), right (`>`) or boundary (`-`) mark\n+++%w(++`[<w>[,<i1>[,<i2>]]]`++)++:: switch line wrapping, like the `-w` option of\n \t\t\t    linkgit:git-shortlog[1].\n-'%<( <N> [,trunc|ltrunc|mtrunc])':: make the next placeholder take at\n+++%<(++`<n>[,(trunc|ltrunc|mtrunc)]`++)++:: make the next placeholder take at\n \t\t\t\t  least N column widths, padding spaces on\n \t\t\t\t  the right if necessary.  Optionally\n-\t\t\t\t  truncate (with ellipsis '..') at the left (ltrunc) `..ft`,\n+\t\t\t\t  truncate (with ellipsis `..`) at the left (ltrunc) `..ft`,\n \t\t\t\t  the middle (mtrunc) `mi..le`, or the end\n \t\t\t\t  (trunc) `rig..`, if the output is longer than\n-\t\t\t\t  N columns.\n+\t\t\t\t  _<n>_ columns.\n \t\t\t\t  Note 1: that truncating\n-\t\t\t\t  only works correctly with N >= 2.\n-\t\t\t\t  Note 2: spaces around the N and M (see below)\n+\t\t\t\t  only works correctly with _<n>_ >= 2.\n+\t\t\t\t  Note 2: spaces around the _<n>_ and _<m>_ (see below)\n \t\t\t\t  values are optional.\n \t\t\t\t  Note 3: Emojis and other wide characters\n \t\t\t\t  will take two display columns, which may\n \t\t\t\t  over-run column boundaries.\n \t\t\t\t  Note 4: decomposed character combining marks\n \t\t\t\t  may be misplaced at padding boundaries.\n-'%<|( <M> )':: make the next placeholder take at least until Mth\n+++%<|(++_<m>_ ++)++:: make the next placeholder take at least until _<m>_ th\n \t     display column, padding spaces on the right if necessary.\n-\t     Use negative M values for column positions measured\n+\t     Use negative _<m>_ values for column positions measured\n \t     from the right hand edge of the terminal window.\n-'%>( <N> )', '%>|( <M> )':: similar to '%<( <N> )', '%<|( <M> )' respectively,\n+++%>(++_<n>_++)++::\n+++%>|(++_<m>_++)++:: similar to ++%<(++_<n>_++)++, ++%<|(++_<m>_++)++ respectively,\n \t\t\tbut padding spaces on the left\n-'%>>( <N> )', '%>>|( <M> )':: similar to '%>( <N> )', '%>|( <M> )'\n+++%>>(++_<n>_++)++::\n+++%>>|(++_<m>_++)++:: similar to ++%>(++_<n>_++)++, ++%>|(++_<m>_++)++\n \t\t\t  respectively, except that if the next\n \t\t\t  placeholder takes more spaces than given and\n \t\t\t  there are spaces on its left, use those\n \t\t\t  spaces\n-'%><( <N> )', '%><|( <M> )':: similar to '%<( <N> )', '%<|( <M> )'\n+++%><(++_<n>_++)++::\n+++%><|(++_<m>_++)++:: similar to ++%<(++_<n>_++)++, ++%<|(++_<m>_++)++\n \t\t\t  respectively, but padding both sides\n \t\t\t  (i.e. the text is centered)\n \n - Placeholders that expand to information extracted from the commit:\n-'%H':: commit hash\n-'%h':: abbreviated commit hash\n-'%T':: tree hash\n-'%t':: abbreviated tree hash\n-'%P':: parent hashes\n-'%p':: abbreviated parent hashes\n-'%an':: author name\n-'%aN':: author name (respecting .mailmap, see linkgit:git-shortlog[1]\n++%H+:: commit hash\n++%h+:: abbreviated commit hash\n++%T+:: tree hash\n++%t+:: abbreviated tree hash\n++%P+:: parent hashes\n++%p+:: abbreviated parent hashes\n++%an+:: author name\n++%aN+:: author name (respecting .mailmap, see linkgit:git-shortlog[1]\n \tor linkgit:git-blame[1])\n-'%ae':: author email\n-'%aE':: author email (respecting .mailmap, see linkgit:git-shortlog[1]\n++%ae+:: author email\n++%aE+:: author email (respecting .mailmap, see linkgit:git-shortlog[1]\n \tor linkgit:git-blame[1])\n-'%al':: author email local-part (the part before the '@' sign)\n-'%aL':: author local-part (see '%al') respecting .mailmap, see\n++%al+:: author email local-part (the part before the `@` sign)\n++%aL+:: author local-part (see +%al+) respecting .mailmap, see\n \tlinkgit:git-shortlog[1] or linkgit:git-blame[1])\n-'%ad':: author date (format respects --date= option)\n-'%aD':: author date, RFC2822 style\n-'%ar':: author date, relative\n-'%at':: author date, UNIX timestamp\n-'%ai':: author date, ISO 8601-like format\n-'%aI':: author date, strict ISO 8601 format\n-'%as':: author date, short format (`YYYY-MM-DD`)\n-'%ah':: author date, human style (like the `--date=human` option of\n++%ad+:: author date (format respects --date= option)\n++%aD+:: author date, RFC2822 style\n++%ar+:: author date, relative\n++%at+:: author date, UNIX timestamp\n++%ai+:: author date, ISO 8601-like format\n++%aI+:: author date, strict ISO 8601 format\n++%as+:: author date, short format (`YYYY-MM-DD`)\n++%ah+:: author date, human style (like the `--date=human` option of\n \tlinkgit:git-rev-list[1])\n-'%cn':: committer name\n-'%cN':: committer name (respecting .mailmap, see\n++%cn+:: committer name\n++%cN+:: committer name (respecting .mailmap, see\n \tlinkgit:git-shortlog[1] or linkgit:git-blame[1])\n-'%ce':: committer email\n-'%cE':: committer email (respecting .mailmap, see\n++%ce+:: committer email\n++%cE+:: committer email (respecting .mailmap, see\n \tlinkgit:git-shortlog[1] or linkgit:git-blame[1])\n-'%cl':: committer email local-part (the part before the '@' sign)\n-'%cL':: committer local-part (see '%cl') respecting .mailmap, see\n++%cl+:: committer email local-part (the part before the `@` sign)\n++%cL+:: committer local-part (see +%cl+) respecting .mailmap, see\n \tlinkgit:git-shortlog[1] or linkgit:git-blame[1])\n-'%cd':: committer date (format respects --date= option)\n-'%cD':: committer date, RFC2822 style\n-'%cr':: committer date, relative\n-'%ct':: committer date, UNIX timestamp\n-'%ci':: committer date, ISO 8601-like format\n-'%cI':: committer date, strict ISO 8601 format\n-'%cs':: committer date, short format (`YYYY-MM-DD`)\n-'%ch':: committer date, human style (like the `--date=human` option of\n++%cd+:: committer date (format respects --date= option)\n++%cD+:: committer date, RFC2822 style\n++%cr+:: committer date, relative\n++%ct+:: committer date, UNIX timestamp\n++%ci+:: committer date, ISO 8601-like format\n++%cI+:: committer date, strict ISO 8601 format\n++%cs+:: committer date, short format (`YYYY-MM-DD`)\n++%ch+:: committer date, human style (like the `--date=human` option of\n \tlinkgit:git-rev-list[1])\n-'%d':: ref names, like the --decorate option of linkgit:git-log[1]\n-'%D':: ref names without the \" (\", \")\" wrapping.\n-'%(decorate[:<options>])'::\n++%d+:: ref names, like the --decorate option of linkgit:git-log[1]\n++%D+:: ref names without the \" (\", \")\" wrapping.\n+++%(decorate++`[:<option>,...]`++)++::\n ref names with custom decorations. The `decorate` string may be followed by a\n colon and zero or more comma-separated options. Option values may contain\n literal formatting codes. These must be used for commas (`%x2C`) and closing\n parentheses (`%x29`), due to their role in the option syntax.\n +\n-** 'prefix=<value>': Shown before the list of ref names.  Defaults to \"{nbsp}`(`\".\n-** 'suffix=<value>': Shown after the list of ref names.  Defaults to \"`)`\".\n-** 'separator=<value>': Shown between ref names.  Defaults to \"`,`{nbsp}\".\n-** 'pointer=<value>': Shown between HEAD and the branch it points to, if any.\n-\t\t      Defaults to \"{nbsp}`->`{nbsp}\".\n-** 'tag=<value>': Shown before tag names. Defaults to \"`tag:`{nbsp}\".\n+** `prefix=<value>`: Shown before the list of ref names.  Defaults to \"{nbsp}+(+\".\n+** `suffix=<value>`: Shown after the list of ref names.  Defaults to \"+)+\".\n+** `separator=<value>`: Shown between ref names.  Defaults to \"+,+{nbsp}\".\n+** `pointer=<value>`: Shown between HEAD and the branch it points to, if any.\n+\t\t      Defaults to \"{nbsp}+->+{nbsp}\".\n+** `tag=<value>`: Shown before tag names. Defaults to \"`tag:`{nbsp}\".\n \n +\n For example, to produce decorations with no wrapping\n or tag annotations, and spaces as separators:\n +\n-`%(decorate:prefix=,suffix=,tag=,separator= )`\n+++%(decorate:prefix=,suffix=,tag=,separator= )++\n \n-'%(describe[:<options>])'::\n+++%(describe++`[:<option>,...]`++)++::\n human-readable name, like linkgit:git-describe[1]; empty string for\n undescribable commits.  The `describe` string may be followed by a colon and\n zero or more comma-separated options.  Descriptions can be inconsistent when\n tags are added or removed at the same time.\n +\n-** 'tags[=<bool-value>]': Instead of only considering annotated tags,\n+** `tags[=<bool-value>]`: Instead of only considering annotated tags,\n    consider lightweight tags as well.\n-** 'abbrev=<number>': Instead of using the default number of hexadecimal digits\n+** `abbrev=<number>`: Instead of using the default number of hexadecimal digits\n    (which will vary according to the number of objects in the repository with a\n    default of 7) of the abbreviated object name, use <number> digits, or as many\n    digits as needed to form a unique object name.\n-** 'match=<pattern>': Only consider tags matching the given\n-   `glob(7)` pattern, excluding the \"refs/tags/\" prefix.\n-** 'exclude=<pattern>': Do not consider tags matching the given\n-   `glob(7)` pattern, excluding the \"refs/tags/\" prefix.\n+** `match=<pattern>`: Only consider tags matching the given\n+   `glob(7)` _<pattern>_, excluding the `refs/tags/` prefix.\n+** `exclude=<pattern>`: Do not consider tags matching the given\n+   `glob(7)` _<pattern>_, excluding the `refs/tags/` prefix.\n \n-'%S':: ref name given on the command line by which the commit was reached\n++%S+:: ref name given on the command line by which the commit was reached\n        (like `git log --source`), only works with `git log`\n-'%e':: encoding\n-'%s':: subject\n-'%f':: sanitized subject line, suitable for a filename\n-'%b':: body\n-'%B':: raw body (unwrapped subject and body)\n++%e+:: encoding\n++%s+:: subject\n++%f+:: sanitized subject line, suitable for a filename\n++%b+:: body\n++%B+:: raw body (unwrapped subject and body)\n ifndef::git-rev-list[]\n-'%N':: commit notes\n++%N+:: commit notes\n endif::git-rev-list[]\n-'%GG':: raw verification message from GPG for a signed commit\n-'%G?':: show \"G\" for a good (valid) signature,\n++%GG+:: raw verification message from GPG for a signed commit\n++%G?+:: show \"G\" for a good (valid) signature,\n \t\"B\" for a bad signature,\n \t\"U\" for a good signature with unknown validity,\n \t\"X\" for a good signature that has expired,\n@@ -279,86 +282,86 @@ endif::git-rev-list[]\n \t\"R\" for a good signature made by a revoked key,\n \t\"E\" if the signature cannot be checked (e.g. missing key)\n \tand \"N\" for no signature\n-'%GS':: show the name of the signer for a signed commit\n-'%GK':: show the key used to sign a signed commit\n-'%GF':: show the fingerprint of the key used to sign a signed commit\n-'%GP':: show the fingerprint of the primary key whose subkey was used\n++%GS+:: show the name of the signer for a signed commit\n++%GK+:: show the key used to sign a signed commit\n++%GF+:: show the fingerprint of the key used to sign a signed commit\n++%GP+:: show the fingerprint of the primary key whose subkey was used\n \tto sign a signed commit\n-'%GT':: show the trust level for the key used to sign a signed commit\n-'%gD':: reflog selector, e.g., `refs/stash@{1}` or `refs/stash@{2\n++%GT+:: show the trust level for the key used to sign a signed commit\n++%gD+:: reflog selector, e.g., `refs/stash@{1}` or `refs/stash@{2\n \tminutes ago}`; the format follows the rules described for the\n \t`-g` option. The portion before the `@` is the refname as\n \tgiven on the command line (so `git log -g refs/heads/master`\n \twould yield `refs/heads/master@{0}`).\n-'%gd':: shortened reflog selector; same as `%gD`, but the refname\n++%gd+:: shortened reflog selector; same as `%gD`, but the refname\n \tportion is shortened for human readability (so\n \t`refs/heads/master` becomes just `master`).\n-'%gn':: reflog identity name\n-'%gN':: reflog identity name (respecting .mailmap, see\n++%gn+:: reflog identity name\n++%gN+:: reflog identity name (respecting .mailmap, see\n \tlinkgit:git-shortlog[1] or linkgit:git-blame[1])\n-'%ge':: reflog identity email\n-'%gE':: reflog identity email (respecting .mailmap, see\n++%ge+:: reflog identity email\n++%gE+:: reflog identity email (respecting .mailmap, see\n \tlinkgit:git-shortlog[1] or linkgit:git-blame[1])\n-'%gs':: reflog subject\n-'%(trailers[:<options>])'::\n++%gs+:: reflog subject\n+++%(trailers++`[:<option>,...]`++)++::\n display the trailers of the body as interpreted by\n linkgit:git-interpret-trailers[1]. The `trailers` string may be followed by\n a colon and zero or more comma-separated options. If any option is provided\n multiple times, the last occurrence wins.\n +\n-** 'key=<key>': only show trailers with specified <key>. Matching is done\n+** `key=<key>`: only show trailers with specified <key>. Matching is done\n    case-insensitively and trailing colon is optional. If option is\n    given multiple times trailer lines matching any of the keys are\n    shown. This option automatically enables the `only` option so that\n    non-trailer lines in the trailer block are hidden. If that is not\n    desired it can be disabled with `only=false`.  E.g.,\n-   `%(trailers:key=Reviewed-by)` shows trailer lines with key\n+   +%(trailers:key=Reviewed-by)+ shows trailer lines with key\n    `Reviewed-by`.\n-** 'only[=<bool>]': select whether non-trailer lines from the trailer\n+** `only[=<bool>]`: select whether non-trailer lines from the trailer\n    block should be included.\n-** 'separator=<sep>': specify the separator inserted between trailer\n+** `separator=<sep>`: specify the separator inserted between trailer\n    lines. Defaults to a line feed character. The string <sep> may contain\n    the literal formatting codes described above. To use comma as\n    separator one must use `%x2C` as it would otherwise be parsed as\n-   next option. E.g., `%(trailers:key=Ticket,separator=%x2C )`\n+   next option. E.g., +%(trailers:key=Ticket,separator=%x2C )+\n    shows all trailer lines whose key is \"Ticket\" separated by a comma\n    and a space.\n-** 'unfold[=<bool>]': make it behave as if interpret-trailer's `--unfold`\n+** `unfold[=<bool>]`: make it behave as if interpret-trailer's `--unfold`\n    option was given. E.g.,\n-   `%(trailers:only,unfold=true)` unfolds and shows all trailer lines.\n-** 'keyonly[=<bool>]': only show the key part of the trailer.\n-** 'valueonly[=<bool>]': only show the value part of the trailer.\n-** 'key_value_separator=<sep>': specify the separator inserted between\n+   +%(trailers:only,unfold=true)+ unfolds and shows all trailer lines.\n+** `keyonly[=<bool>]`: only show the key part of the trailer.\n+** `valueonly[=<bool>]`: only show the value part of the trailer.\n+** `key_value_separator=<sep>`: specify the separator inserted between\n    the key and value of each trailer. Defaults to \": \". Otherwise it\n-   shares the same semantics as 'separator=<sep>' above.\n+   shares the same semantics as `separator=<sep>` above.\n \n NOTE: Some placeholders may depend on other options given to the\n-revision traversal engine. For example, the `%g*` reflog options will\n+revision traversal engine. For example, the +%g*+ reflog options will\n insert an empty string unless we are traversing reflog entries (e.g., by\n-`git log -g`). The `%d` and `%D` placeholders will use the \"short\"\n+`git log -g`). The +%d+ and +%D+ placeholders will use the \"short\"\n decoration format if `--decorate` was not already provided on the command\n line.\n \n The boolean options accept an optional value `[=<bool-value>]`. The\n-values taken by `--type=bool` git-config[1], like `yes` and `off`,\n+values taken by `--type=bool` linkgit:git-config[1], like `yes` and `off`,\n are all accepted.  Giving a boolean option without `=<value>` is\n equivalent to giving it with `=true`.\n \n-If you add a `+` (plus sign) after '%' of a placeholder, a line-feed\n+If you add a `+` (plus sign) after +%+ of a placeholder, a line-feed\n is inserted immediately before the expansion if and only if the\n placeholder expands to a non-empty string.\n \n-If you add a `-` (minus sign) after '%' of a placeholder, all consecutive\n+If you add a `-` (minus sign) after +%+ of a placeholder, all consecutive\n line-feeds immediately preceding the expansion are deleted if and only if the\n placeholder expands to an empty string.\n \n-If you add a ` ` (space) after '%' of a placeholder, a space\n+If you add a `' '` (space) after +%+ of a placeholder, a space\n is inserted immediately before the expansion if and only if the\n placeholder expands to a non-empty string.\n \n-* 'tformat:'\n+* `tformat:`\n +\n-The 'tformat:' format works exactly like 'format:', except that it\n+The `tformat:` format works exactly like `format:`, except that it\n provides \"terminator\" semantics instead of \"separator\" semantics. In\n other words, each commit has the message terminator character (usually a\n newline) appended, rather than a separator placed between entries.\n@@ -378,7 +381,7 @@ $ git log -2 --pretty=tformat:%h 4da45bef \\\n 7134973\n ---------------------\n +\n-In addition, any unrecognized string that has a `%` in it is interpreted\n+In addition, any unrecognized string that has a +%+ in it is interpreted\n as if it has `tformat:` in front of it.  For example, these two are\n equivalent:\n +\n-- \ngitgitgadget\n\n"},{"id":"520887","messageId":"c2346eb580c8bc802598d36bc705c1a067ce1aad.1751203241.git.gitgitgadget@gmail.com","threadId":"63603","inReplyTo":"pull.1933.v2.git.1751203241.gitgitgadget@gmail.com","subject":"[PATCH v2 8/9] doc: git-log: convert diff options to new doc format","fromName":"Jean-Noël Avila via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2025-06-29T13:20:40Z","receivedAt":"2025-06-29T13:20:52Z","isPatch":true,"sender":{"key":"jn.avila@free.fr","avatar":"https://avatars.githubusercontent.com/u/156172?v=4"},"body":"From: =?UTF-8?q?Jean-No=C3=ABl=20Avila?= <jn.avila@free.fr>\n\n- Use `backticks` for keywords and more complex option\ndescriptions. The new rendering engine will apply synopsis rules to\nthese spans.\n- In description lists, put each option on its own line, to make them more\nsearchable and enable automatic translation of the options.\n\nSigned-off-by: Jean-Noël Avila <jn.avila@free.fr>\n---\n Documentation/diff-options.adoc | 40 +++++++++++++++++++--------------\n 1 file changed, 23 insertions(+), 17 deletions(-)\n\ndiff --git a/Documentation/diff-options.adoc b/Documentation/diff-options.adoc\nindex 640eb6e7db58..f3a35d81411f 100644\n--- a/Documentation/diff-options.adoc\n+++ b/Documentation/diff-options.adoc\n@@ -37,32 +37,32 @@ endif::git-diff[]\n endif::git-format-patch[]\n \n ifdef::git-log[]\n--m::\n+`-m`::\n \tShow diffs for merge commits in the default format. This is\n \tsimilar to `--diff-merges=on`, except `-m` will\n \tproduce no output unless `-p` is given as well.\n \n--c::\n+`-c`::\n \tProduce combined diff output for merge commits.\n \tShortcut for `--diff-merges=combined -p`.\n \n---cc::\n+`--cc`::\n \tProduce dense combined diff output for merge commits.\n \tShortcut for `--diff-merges=dense-combined -p`.\n \n---dd::\n+`--dd`::\n \tProduce diff with respect to first parent for both merge and\n \tregular commits.\n \tShortcut for `--diff-merges=first-parent -p`.\n \n---remerge-diff::\n+`--remerge-diff`::\n \tProduce remerge-diff output for merge commits.\n \tShortcut for `--diff-merges=remerge -p`.\n \n---no-diff-merges::\n+`--no-diff-merges`::\n \tSynonym for `--diff-merges=off`.\n \n---diff-merges=<format>::\n+`--diff-merges=<format>`::\n \tSpecify diff format to be used for merge commits. Default is\n \t{diff-merges-default} unless `--first-parent` is in use, in\n \twhich case `first-parent` is the default.\n@@ -70,48 +70,54 @@ ifdef::git-log[]\n The following formats are supported:\n +\n --\n-off, none::\n+`off`::\n+`none`::\n \tDisable output of diffs for merge commits. Useful to override\n \timplied value.\n \n-on, m::\n+`on`::\n+`m`::\n \tMake diff output for merge commits to be shown in the default\n \tformat. The default format can be changed using\n \t`log.diffMerges` configuration variable, whose default value\n \tis `separate`.\n \n-first-parent, 1::\n+`first-parent`::\n+`1`::\n \tShow full diff with respect to first parent. This is the same\n \tformat as `--patch` produces for non-merge commits.\n \n-separate::\n+`separate`::\n \tShow full diff with respect to each of parents.\n \tSeparate log entry and diff is generated for each parent.\n \n-combined, c::\n+`combined`::\n+`c`::\n \tShow differences from each of the parents to the merge\n \tresult simultaneously instead of showing pairwise diff between\n \ta parent and the result one at a time. Furthermore, it lists\n \tonly files which were modified from all parents.\n \n-dense-combined, cc::\n+`dense-combined`::\n+`cc`::\n \tFurther compress output produced by `--diff-merges=combined`\n \tby omitting uninteresting hunks whose contents in the parents\n \thave only two variants and the merge result picks one of them\n \twithout modification.\n \n-remerge, r::\n-\tRemerge two-parent merge commits to create a temporary tree\n+`remerge`::\n+`r`:: Remerge two-parent merge commits to create a temporary tree\n \tobject--potentially containing files with conflict markers\n \tand such.  A diff is then shown between that temporary tree\n \tand the actual merge commit.\n+--\n +\n The output emitted when this option is used is subject to change, and\n so is its interaction with other options (unless explicitly\n documented).\n---\n \n---combined-all-paths::\n+\n+`--combined-all-paths`::\n \tCause combined diffs (used for merge commits) to\n \tlist the name of the file from all parents.  It thus only has\n \teffect when `--diff-merges=[dense-]combined` is in use, and\n-- \ngitgitgadget\n\n"},{"id":"520888","messageId":"b12b8294b86e53dd864f954628542cfff497a0e0.1751203241.git.gitgitgadget@gmail.com","threadId":"63603","inReplyTo":"pull.1933.v2.git.1751203241.gitgitgadget@gmail.com","subject":"[PATCH v2 9/9] doc: git-log: convert log config to new doc format","fromName":"Jean-Noël Avila via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2025-06-29T13:20:41Z","receivedAt":"2025-06-29T13:20:53Z","isPatch":true,"sender":{"key":"jn.avila@free.fr","avatar":"https://avatars.githubusercontent.com/u/156172?v=4"},"body":"From: =?UTF-8?q?Jean-No=C3=ABl=20Avila?= <jn.avila@free.fr>\n\n- Use `backticks` for keywords and more complex option\ndescriptions. The new rendering engine will apply synopsis rules to\nthese spans.\n- Explain possible options in description list instead of in a paragraph.\n\nSigned-off-by: Jean-Noël Avila <jn.avila@free.fr>\n---\n Documentation/config/log.adoc | 47 +++++++++++++++++++----------------\n 1 file changed, 26 insertions(+), 21 deletions(-)\n\ndiff --git a/Documentation/config/log.adoc b/Documentation/config/log.adoc\nindex a9b160e7dee4..16e00e8d296a 100644\n--- a/Documentation/config/log.adoc\n+++ b/Documentation/config/log.adoc\n@@ -1,5 +1,5 @@\n-log.abbrevCommit::\n-\tIf true, makes\n+`log.abbrevCommit`::\n+\tIf `true`, make\n ifndef::with-breaking-changes[]\n \tlinkgit:git-log[1], linkgit:git-show[1], and\n \tlinkgit:git-whatchanged[1]\n@@ -10,62 +10,67 @@ endif::with-breaking-changes[]\n \tassume `--abbrev-commit`. You may\n \toverride this option with `--no-abbrev-commit`.\n \n-log.date::\n-\tSet the default date-time mode for the 'log' command.\n-\tSetting a value for log.date is similar to using 'git log''s\n+`log.date`::\n+\tSet the default date-time mode for the `log` command.\n+\tSetting a value for log.date is similar to using `git log`'s\n \t`--date` option.  See linkgit:git-log[1] for details.\n +\n If the format is set to \"auto:foo\" and the pager is in use, format\n \"foo\" will be used for the date format. Otherwise, \"default\" will\n be used.\n \n-log.decorate::\n+`log.decorate`::\n \tPrint out the ref names of any commits that are shown by the log\n-\tcommand. If 'short' is specified, the ref name prefixes 'refs/heads/',\n-\t'refs/tags/' and 'refs/remotes/' will not be printed. If 'full' is\n-\tspecified, the full ref name (including prefix) will be printed.\n-\tIf 'auto' is specified, then if the output is going to a terminal,\n-\tthe ref names are shown as if 'short' were given, otherwise no ref\n-\tnames are shown. This is the same as the `--decorate` option\n-\tof the `git log`.\n+\tcommand. Possible values are:\n++\n+----\n+`short`;; the ref name prefixes `refs/heads/`, `refs/tags/` and\n+\t`refs/remotes/` are not printed.\n+`full`;; the full ref name (including prefix) are printed.\n+`auto`;; if the output is going to a terminal,\n+\tthe ref names are shown as if `short` were given, otherwise no ref\n+\tnames are shown.\n+----\n++\n+This is the same as the `--decorate` option of the `git log`.\n \n-log.initialDecorationSet::\n+`log.initialDecorationSet`::\n \tBy default, `git log` only shows decorations for certain known ref\n \tnamespaces. If 'all' is specified, then show all refs as\n \tdecorations.\n \n-log.excludeDecoration::\n+`log.excludeDecoration`::\n \tExclude the specified patterns from the log decorations. This is\n \tsimilar to the `--decorate-refs-exclude` command-line option, but\n \tthe config option can be overridden by the `--decorate-refs`\n \toption.\n \n-log.diffMerges::\n+`log.diffMerges`::\n \tSet diff format to be used when `--diff-merges=on` is\n \tspecified, see `--diff-merges` in linkgit:git-log[1] for\n \tdetails. Defaults to `separate`.\n \n-log.follow::\n+`log.follow`::\n \tIf `true`, `git log` will act as if the `--follow` option was used when\n \ta single <path> is given.  This has the same limitations as `--follow`,\n \ti.e. it cannot be used to follow multiple files and does not work well\n \ton non-linear history.\n \n-log.graphColors::\n+`log.graphColors`::\n \tA list of colors, separated by commas, that can be used to draw\n \thistory lines in `git log --graph`.\n \n-log.showRoot::\n+`log.showRoot`::\n \tIf true, the initial commit will be shown as a big creation event.\n \tThis is equivalent to a diff against an empty tree.\n \tTools like linkgit:git-log[1] or linkgit:git-whatchanged[1], which\n \tnormally hide the root commit will now show it. True by default.\n \n-log.showSignature::\n+`log.showSignature`::\n \tIf true, makes linkgit:git-log[1], linkgit:git-show[1], and\n \tlinkgit:git-whatchanged[1] assume `--show-signature`.\n \n-log.mailmap::\n+`log.mailmap`::\n \tIf true, makes linkgit:git-log[1], linkgit:git-show[1], and\n \tlinkgit:git-whatchanged[1] assume `--use-mailmap`, otherwise\n \tassume `--no-use-mailmap`. True by default.\n-- \ngitgitgadget\n"},{"id":"521333","messageId":"482f4eb0-b11e-42cd-87fe-3ad9e53f7610@app.fastmail.com","threadId":"63603","inReplyTo":"01835272c2e92269ba0e571b29d0756f63fe9c79.1751203241.git.gitgitgadget@gmail.com","subject":"Re: [PATCH v2 6/9] doc: git-log: convert pretty options to new doc format","fromName":"Kristoffer Haugsbakk","fromEmail":"kristofferhaugsbakk@fastmail.com","sentAt":"2025-07-04T20:31:46Z","receivedAt":"2025-07-04T20:32:08Z","isPatch":true,"sender":{"key":"kristofferhaugsbakk@fastmail.com","avatar":null},"body":"\nOn Sun, Jun 29, 2025, at 15:20, Jean-Noël Avila via GitGitGadget wrote:\n>  See the \"PRETTY FORMATS\" section for some additional details for each\n> -format.  When '=<format>' part is omitted, it defaults to 'medium'.\n> +format.  When `=<format>` part is omitted, it defaults to `medium.\n\ns/`medium./`medium`./\n"},{"id":"521334","messageId":"bc18712a-8f72-4827-b47f-afac69ea6fa0@app.fastmail.com","threadId":"63603","inReplyTo":"d54e297567ac8f3009daa8fdf3de158338b2b700.1749373787.git.gitgitgadget@gmail.com","subject":"Re: [PATCH 7/9] doc: git-log: convert pretty formats to new doc format","fromName":"Kristoffer Haugsbakk","fromEmail":"kristofferhaugsbakk@fastmail.com","sentAt":"2025-07-04T20:43:03Z","receivedAt":"2025-07-04T20:43:24Z","isPatch":true,"sender":{"key":"kristofferhaugsbakk@fastmail.com","avatar":null},"body":"On Sun, Jun 8, 2025, at 11:09, Jean-Noël Avila via GitGitGadget wrote:\n> From: =?UTF-8?q?Jean-No=C3=ABl=20Avila?= <jn.avila@free.fr>\n>\n> - Use _<placeholder>_ instead of <placeholder> in the description\n> - Use `backticks` for keywords and more complex option\n> descriptions. The new rendering engine will apply synopsis rules to\n> these spans.\n>\n> For all the formats in the form of %(foo), the formatting needs to be\n> heavier because we not want the parentheses to be rendered as syntax\n> elements,but as keywords, i.e. we need to circumvent the syntax highlighting\n\nnit: s/elements,but/elements, but/\n\n> -** 'prefix=<value>': Shown before the list of ref names.  Defaults to\n> \"{nbsp}`(`\".\n> -** 'suffix=<value>': Shown after the list of ref names.  Defaults to\n> \"`)`\".\n> -** 'separator=<value>': Shown between ref names.  Defaults to\n> \"`,`{nbsp}\".\n> -** 'pointer=<value>': Shown between HEAD and the branch it points to,\n> if any.\n> -\t\t      Defaults to \"{nbsp}`->`{nbsp}\".\n> -** 'tag=<value>': Shown before tag names. Defaults to \"`tag:`{nbsp}\".\n> +** `prefix=<value>`: Shown before the list of ref names.  Defaults to\n> \"{nbsp}+(+\".\n> +** `suffix=<value>`: Shown after the list of ref names.  Defaults to\n> \"+)+\".\n> +** `separator=<value>`: Shown between ref names.  Defaults to\n> \"+,+{nbsp}\".\n> +** `pointer=<value>`: Shown between HEAD and the branch it points to,\n> if any.\n> +\t\t      Defaults to \"{nbsp}+->+{nbsp}\".\n\n`+->+` gets rendered as `+→+` in the HTMl output.\n`Documentation/doc-diff` shows the same.\n\nHas using `␣` to denote SP in verbatim code blocks been considered\nby anyone?\n\n> +** `tag=<value>`: Shown before tag names. Defaults to \"`tag:`{nbsp}\".\n>\n>  +\n>  For example, to produce decorations with no wrapping\n>  or tag annotations, and spaces as separators:\n>  +\n> -`%(decorate:prefix=,suffix=,tag=,separator= )`\n> +++%(decorate:prefix=,suffix=,tag=,separator= )++\n"},{"id":"521336","messageId":"bbaabac0-7832-40f3-b661-e9681cfdfa82@app.fastmail.com","threadId":"63603","inReplyTo":"bc18712a-8f72-4827-b47f-afac69ea6fa0@app.fastmail.com","subject":"Re: [PATCH 7/9] doc: git-log: convert pretty formats to new doc format","fromName":"Kristoffer Haugsbakk","fromEmail":"kristofferhaugsbakk@fastmail.com","sentAt":"2025-07-04T21:39:31Z","receivedAt":"2025-07-04T21:39:53Z","isPatch":true,"sender":{"key":"kristofferhaugsbakk@fastmail.com","avatar":null},"body":"On Fri, Jul 4, 2025, at 22:43, Kristoffer Haugsbakk wrote:\n> Has using `␣` to denote SP in verbatim code blocks been considered\n> by anyone?\n\nBad example to associate with ` -> ` (␣->␣). But it could work for some\nthings like `:␣` in git-interpret-trailers(1).\n"},{"id":"521365","messageId":"13797374.uLZWGnKmhe@cayenne","threadId":"63603","inReplyTo":"bbaabac0-7832-40f3-b661-e9681cfdfa82@app.fastmail.com","subject":"Re: [PATCH 7/9] doc: git-log: convert pretty formats to new doc format","fromName":"Jean-Noël AVILA","fromEmail":"jn.avila@free.fr","sentAt":"2025-07-06T15:07:41Z","receivedAt":"2025-07-06T15:07:51Z","isPatch":true,"sender":{"key":"jn.avila@free.fr","avatar":"https://avatars.githubusercontent.com/u/156172?v=4"},"body":"On Friday, 4 July 2025 23:39:31 CEST Kristoffer Haugsbakk wrote:\n> On Fri, Jul 4, 2025, at 22:43, Kristoffer Haugsbakk wrote:\n> > Has using `␣` to denote SP in verbatim code blocks been considered\n> > by anyone?\n> \n> Bad example to associate with ` -> ` (␣->␣). But it could work for some\n> things like `:␣` in git-interpret-trailers(1).\n\nThat's one issue when doing the conversion to the new format, mainly because \nsometimes back-quoting the commands does not enclose them in a frame that \nwould preserve the spaces in the manpage format, what was done at git-scm.com.\n\nHowever, using  `␣` everywhere might be a bit overweight. It would be reserved \nto places where spotting the space character is difficult\n\nThanks\n\nJN\n\n\n\n"},{"id":"521366","messageId":"7824165.EvYhyI6sBW@cayenne","threadId":"63603","inReplyTo":"xmqq4iwcenrc.fsf@gitster.g","subject":"Re: [PATCH 0/9] Doc git log","fromName":"Jean-Noël AVILA","fromEmail":"jn.avila@free.fr","sentAt":"2025-07-06T15:27:56Z","receivedAt":"2025-07-06T15:28:00Z","isPatch":true,"sender":{"key":"jn.avila@free.fr","avatar":"https://avatars.githubusercontent.com/u/156172?v=4"},"body":"On Wednesday, 18 June 2025 23:35:51 CEST Junio C Hamano wrote:\n> \"Jean-Noël Avila via GitGitGadget\" <gitgitgadget@gmail.com> writes:\n> > This series converts the man page of git log to the synopsis format style.\n> > Git log is the second largest manpage after git config, which makes the\n> > changes quite large.\n> \n> ;-)\n> \n> Other than the \"add % to literal\" in [5/9], which I couldn't figure\n> out if it truly belongs to \"doc: git-log: convert rev list options\n> to new doc format\", everything looked pretty reasonable.\n\nTBH, I'm not entirely satisfied with this patch, because it reintroduces \ncomplicated format marks everywhere instead of pushing this complexity into \nthe formatting logic.  The problem is coming again that we have some signs \nwhich are used for the synopsis syntax but can appear as \"keywords\". First \nthere was the three dot notation, now it's the parenthesis. Coming up with \nbasic regexps that can handle the context difference to tell apart their \ngrammatical meaning is increasing difficult, if not impossible.\n\nFor git-scm.com, with asciidoctor, an extension managing the synopsis style \nusing a parser combinator was introduced to alleviate the difficulty of the \ntask.\n\nThe problem is that, as far as I can tell, asciidoc.py does not propose such \nextensions in a programmable way. If anybody can direct me to an example of \nusing a parser combinator in asciidoc.py, that would be great. For the moment, \nthis patch is the best proposition.\n\nThanks\n\nJN\n\n\n"},{"id":"521460","messageId":"pull.1933.v3.git.1751914412.gitgitgadget@gmail.com","threadId":"63603","inReplyTo":"pull.1933.v2.git.1751203241.gitgitgadget@gmail.com","subject":"[PATCH v3 0/9] doc: convert git log man page to new synopsis format","fromName":"Jean-Noël Avila via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2025-07-07T18:53:23Z","receivedAt":"2025-07-07T18:53:36Z","isPatch":true,"sender":{"key":"jn.avila@free.fr","avatar":"https://avatars.githubusercontent.com/u/156172?v=4"},"body":"This series converts the man page of git log to the synopsis format style.\nGit log is the second largest manpage after git config, which makes the\nchanges quite large.\n\nA special note about the log format description which required escaping the\nsynopsis processing of parentheses.\n\nChanges since V1:\n\n * rework the grammar style when refering to plural placeholders . The text\n   is more descriptive and does not rely on puns. Puns may be difficult to\n   understand and to translate.\n * change commit message to reflect the conversion of inline description of\n   several option to a list.\n\nJean-Noël Avila (9):\n  doc: convert git-log to new documentation format\n  doc: git-log convert rev-list-description  to new doc format\n  doc: git-log: convert line range options to new doc format\n  doc: git-log: convert line range format to new doc format\n  doc: git-log: convert rev list options to new doc format\n  doc: git-log: convert pretty options to new doc format\n  doc: git-log: convert pretty formats to new doc format\n  doc: git-log: convert diff options to new doc format\n  doc: git-log: convert log config to new doc format\n\n Documentation/asciidoc.conf.in             |   2 +-\n Documentation/asciidoctor-extensions.rb.in |   4 +-\n Documentation/config/log.adoc              |  47 +--\n Documentation/diff-options.adoc            |  40 ++-\n Documentation/git-log.adoc                 |  86 ++---\n Documentation/line-range-format.adoc       |  26 +-\n Documentation/line-range-options.adoc      |  10 +-\n Documentation/pretty-formats.adoc          | 283 +++++++--------\n Documentation/pretty-options.adoc          |  71 ++--\n Documentation/rev-list-description.adoc    |   6 +-\n Documentation/rev-list-options.adoc        | 390 ++++++++++-----------\n 11 files changed, 493 insertions(+), 472 deletions(-)\n\n\nbase-commit: 8b6f19ccfc3aefbd0f22f6b7d56ad6a3fc5e4f37\nPublished-As: https://github.com/gitgitgadget/git/releases/tag/pr-1933%2Fjnavila%2Fdoc_git_log-v3\nFetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1933/jnavila/doc_git_log-v3\nPull-Request: https://github.com/gitgitgadget/git/pull/1933\n\nRange-diff vs v2:\n\n  1:  f2b69588195 =  1:  10ea4ad1cbe doc: convert git-log to new documentation format\n  2:  1f6c951726b =  2:  9b52a62204c doc: git-log convert rev-list-description  to new doc format\n  3:  7bab515e136 =  3:  b0b229082ce doc: git-log: convert line range options to new doc format\n  4:  384a7d23563 =  4:  a4ac3ea5306 doc: git-log: convert line range format to new doc format\n  5:  c2e857105d4 =  5:  1eb897ee9ad doc: git-log: convert rev list options to new doc format\n  6:  01835272c2e !  6:  b860561069d doc: git-log: convert pretty options to new doc format\n     @@ Documentation/pretty-options.adoc\n       +\n       See the \"PRETTY FORMATS\" section for some additional details for each\n      -format.  When '=<format>' part is omitted, it defaults to 'medium'.\n     -+format.  When `=<format>` part is omitted, it defaults to `medium.\n     ++format.  When `=<format>` part is omitted, it defaults to `medium`.\n       +\n      -Note: you can specify the default pretty format in the repository\n      +NOTE: you can specify the default pretty format in the repository\n  7:  d5490f7d868 =  7:  0d461544c9d doc: git-log: convert pretty formats to new doc format\n  8:  c2346eb580c =  8:  207fc49a201 doc: git-log: convert diff options to new doc format\n  9:  b12b8294b86 =  9:  b51d3621964 doc: git-log: convert log config to new doc format\n\n-- \ngitgitgadget\n"},{"id":"521461","messageId":"10ea4ad1cbe237754008ed0409aedb4d576eb0d8.1751914412.git.gitgitgadget@gmail.com","threadId":"63603","inReplyTo":"pull.1933.v3.git.1751914412.gitgitgadget@gmail.com","subject":"[PATCH v3 1/9] doc: convert git-log to new documentation format","fromName":"Jean-Noël Avila via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2025-07-07T18:53:24Z","receivedAt":"2025-07-07T18:53:38Z","isPatch":true,"sender":{"key":"jn.avila@free.fr","avatar":"https://avatars.githubusercontent.com/u/156172?v=4"},"body":"From: =?UTF-8?q?Jean-No=C3=ABl=20Avila?= <jn.avila@free.fr>\n\n- Switch the synopsis to a synopsis block which will automatically\n  format placeholders in italics and keywords in monospace\n- Use _<placeholder>_ instead of <placeholder> in the description\n- Use `backticks` for keywords and more complex option\ndescriptions. The new rendering engine will apply synopsis rules to\nthese spans.\n\nWe also transform inline descriptions of possible values of option\n--decorate into a list, which is more readable and extensible.\n\nSigned-off-by: Jean-Noël Avila <jn.avila@free.fr>\n---\n Documentation/git-log.adoc | 86 ++++++++++++++++++++------------------\n 1 file changed, 46 insertions(+), 40 deletions(-)\n\ndiff --git a/Documentation/git-log.adoc b/Documentation/git-log.adoc\nindex ae8a7e2d6389..b6f3d92c435f 100644\n--- a/Documentation/git-log.adoc\n+++ b/Documentation/git-log.adoc\n@@ -8,8 +8,8 @@ git-log - Show commit logs\n \n SYNOPSIS\n --------\n-[verse]\n-'git log' [<options>] [<revision-range>] [[--] <path>...]\n+[synopsis]\n+git log [<options>] [<revision-range>] [[--] <path>...]\n \n DESCRIPTION\n -----------\n@@ -27,28 +27,34 @@ each commit introduces are shown.\n OPTIONS\n -------\n \n---follow::\n+`--follow`::\n \tContinue listing the history of a file beyond renames\n \t(works only for a single file).\n \n---no-decorate::\n---decorate[=short|full|auto|no]::\n-\tPrint out the ref names of any commits that are shown. If 'short' is\n-\tspecified, the ref name prefixes 'refs/heads/', 'refs/tags/' and\n-\t'refs/remotes/' will not be printed. If 'full' is specified, the\n-\tfull ref name (including prefix) will be printed. If 'auto' is\n-\tspecified, then if the output is going to a terminal, the ref names\n-\tare shown as if 'short' were given, otherwise no ref names are\n-\tshown. The option `--decorate` is short-hand for `--decorate=short`.\n-\tDefault to configuration value of `log.decorate` if configured,\n-\totherwise, `auto`.\n-\n---decorate-refs=<pattern>::\n---decorate-refs-exclude=<pattern>::\n+`--no-decorate`::\n+`--decorate[=(short|full|auto|no)]`::\n+\tPrint out the ref names of any commits that are shown. Possible values\n+\tare:\n++\n+----\n+`short`;; the ref name prefixes `refs/heads/`, `refs/tags/` and\n+\t`refs/remotes/` are not printed.\n+`full`;; the full ref name (including prefix) is printed.\n+`auto`:: if the output is going to a terminal, the ref names\n+\tare shown as if `short` were given, otherwise no ref names are\n+\tshown.\n+----\n++\n+The option `--decorate` is short-hand for `--decorate=short`. Default to\n+configuration value of `log.decorate` if configured, otherwise, `auto`.\n+\n+`--decorate-refs=<pattern>`::\n+`--decorate-refs-exclude=<pattern>`::\n \tFor each candidate reference, do not use it for decoration if it\n-\tmatches any patterns given to `--decorate-refs-exclude` or if it\n-\tdoesn't match any of the patterns given to `--decorate-refs`. The\n-\t`log.excludeDecoration` config option allows excluding refs from\n+\tmatches any of the _<pattern>_ parameters given to\n+\t`--decorate-refs-exclude` or if it doesn't match any of the\n+\t_<pattern>_ parameters given to `--decorate-refs`.\n+\tThe `log.excludeDecoration` config option allows excluding refs from\n \tthe decorations, but an explicit `--decorate-refs` pattern will\n \toverride a match in `log.excludeDecoration`.\n +\n@@ -56,51 +62,51 @@ If none of these options or config settings are given, then references are\n used as decoration if they match `HEAD`, `refs/heads/`, `refs/remotes/`,\n `refs/stash/`, or `refs/tags/`.\n \n---clear-decorations::\n+`--clear-decorations`::\n \tWhen specified, this option clears all previous `--decorate-refs`\n \tor `--decorate-refs-exclude` options and relaxes the default\n \tdecoration filter to include all references. This option is\n \tassumed if the config value `log.initialDecorationSet` is set to\n \t`all`.\n \n---source::\n+`--source`::\n \tPrint out the ref name given on the command line by which each\n \tcommit was reached.\n \n---[no-]mailmap::\n---[no-]use-mailmap::\n+`--[no-]mailmap`::\n+`--[no-]use-mailmap`::\n \tUse mailmap file to map author and committer names and email\n \taddresses to canonical real names and email addresses. See\n \tlinkgit:git-shortlog[1].\n \n---full-diff::\n+`--full-diff`::\n \tWithout this flag, `git log -p <path>...` shows commits that\n \ttouch the specified paths, and diffs about the same specified\n \tpaths.  With this, the full diff is shown for commits that touch\n-\tthe specified paths; this means that \"<path>...\" limits only\n+\tthe specified paths; this means that \"`<path>...`\" limits only\n \tcommits, and doesn't limit diff for those commits.\n +\n Note that this affects all diff-based output types, e.g. those\n produced by `--stat`, etc.\n \n---log-size::\n-\tInclude a line ``log size <number>'' in the output for each commit,\n-\twhere <number> is the length of that commit's message in bytes.\n+`--log-size`::\n+\tInclude a line `log size <number>` in the output for each commit,\n+\twhere _<number>_ is the length of that commit's message in bytes.\n \tIntended to speed up tools that read log messages from `git log`\n \toutput by allowing them to allocate space in advance.\n \n include::line-range-options.adoc[]\n \n-<revision-range>::\n+_<revision-range>_::\n \tShow only commits in the specified revision range.  When no\n-\t<revision-range> is specified, it defaults to `HEAD` (i.e. the\n+\t_<revision-range>_ is specified, it defaults to `HEAD` (i.e. the\n \twhole history leading to the current commit).  `origin..HEAD`\n \tspecifies all the commits reachable from the current commit\n \t(i.e. `HEAD`), but not from `origin`. For a complete list of\n-\tways to spell <revision-range>, see the 'Specifying Ranges'\n+\tways to spell _<revision-range>_, see the 'Specifying Ranges'\n \tsection of linkgit:gitrevisions[7].\n \n-[--] <path>...::\n+`[--] <path>...`::\n \tShow only commits that are enough to explain how the files\n \tthat match the specified paths came to be.  See 'History\n \tSimplification' below for details and other simplification\n@@ -145,14 +151,14 @@ EXAMPLES\n \n `git log --since=\"2 weeks ago\" -- gitk`::\n \n-\tShow the changes during the last two weeks to the file 'gitk'.\n+\tShow the changes during the last two weeks to the file `gitk`.\n \tThe `--` is necessary to avoid confusion with the *branch* named\n-\t'gitk'\n+\t`gitk`\n \n `git log --name-status release..test`::\n \n-\tShow the commits that are in the \"test\" branch but not yet\n-\tin the \"release\" branch, along with the list of paths\n+\tShow the commits that are in the \"`test`\" branch but not yet\n+\tin the \"`release`\" branch, along with the list of paths\n \teach commit modifies.\n \n `git log --follow builtin/rev-list.c`::\n@@ -164,7 +170,7 @@ EXAMPLES\n `git log --branches --not --remotes=origin`::\n \n \tShows all commits that are in any of local branches but not in\n-\tany of remote-tracking branches for 'origin' (what you have that\n+\tany of remote-tracking branches for `origin` (what you have that\n \torigin doesn't).\n \n `git log master --not --remotes=*/master`::\n@@ -200,11 +206,11 @@ CONFIGURATION\n See linkgit:git-config[1] for core variables and linkgit:git-diff[1]\n for settings related to diff generation.\n \n-format.pretty::\n+`format.pretty`::\n \tDefault for the `--format` option.  (See 'Pretty Formats' above.)\n \tDefaults to `medium`.\n \n-i18n.logOutputEncoding::\n+`i18n.logOutputEncoding`::\n \tEncoding to use when displaying logs.  (See 'Discussion' above.)\n \tDefaults to the value of `i18n.commitEncoding` if set, and UTF-8\n \totherwise.\n-- \ngitgitgadget\n\n"},{"id":"521462","messageId":"9b52a62204ca7296da51c6f3bed25f35feaeb9d7.1751914412.git.gitgitgadget@gmail.com","threadId":"63603","inReplyTo":"pull.1933.v3.git.1751914412.gitgitgadget@gmail.com","subject":"[PATCH v3 2/9] doc: git-log convert rev-list-description to new doc format","fromName":"Jean-Noël Avila via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2025-07-07T18:53:25Z","receivedAt":"2025-07-07T18:53:38Z","isPatch":true,"sender":{"key":"jn.avila@free.fr","avatar":"https://avatars.githubusercontent.com/u/156172?v=4"},"body":"From: =?UTF-8?q?Jean-No=C3=ABl=20Avila?= <jn.avila@free.fr>\n\nUse `backticks` for commit ranges. The new rendering engine will apply\nsynopsis rules to these spans.\n\nSigned-off-by: Jean-Noël Avila <jn.avila@free.fr>\n---\n Documentation/rev-list-description.adoc | 6 +++---\n 1 file changed, 3 insertions(+), 3 deletions(-)\n\ndiff --git a/Documentation/rev-list-description.adoc b/Documentation/rev-list-description.adoc\nindex a9efa7fa2722..82c680e57013 100644\n--- a/Documentation/rev-list-description.adoc\n+++ b/Documentation/rev-list-description.adoc\n@@ -26,8 +26,8 @@ endif::git-log[]\n means \"list all the commits which are reachable from 'foo' or 'bar', but\n not from 'baz'\".\n \n-A special notation \"'<commit1>'..'<commit2>'\" can be used as a\n-short-hand for \"^'<commit1>' '<commit2>'\". For example, either of\n+A special notation \"`<commit1>..<commit2>`\" can be used as a\n+short-hand for \"`^<commit1> <commit2>`\". For example, either of\n the following may be used interchangeably:\n \n ifdef::git-rev-list[]\n@@ -43,7 +43,7 @@ $ git log HEAD ^origin\n -----------------------------------------------------------------------\n endif::git-log[]\n \n-Another special notation is \"'<commit1>'...'<commit2>'\" which is useful\n+Another special notation is \"`<commit1>...<commit2>`\" which is useful\n for merges.  The resulting set of commits is the symmetric difference\n between the two operands.  The following two commands are equivalent:\n \n-- \ngitgitgadget\n\n"},{"id":"521463","messageId":"b0b229082ce8f755f177022ec5ba05316275e590.1751914412.git.gitgitgadget@gmail.com","threadId":"63603","inReplyTo":"pull.1933.v3.git.1751914412.gitgitgadget@gmail.com","subject":"[PATCH v3 3/9] doc: git-log: convert line range options to new doc format","fromName":"Jean-Noël Avila via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2025-07-07T18:53:26Z","receivedAt":"2025-07-07T18:53:39Z","isPatch":true,"sender":{"key":"jn.avila@free.fr","avatar":"https://avatars.githubusercontent.com/u/156172?v=4"},"body":"From: =?UTF-8?q?Jean-No=C3=ABl=20Avila?= <jn.avila@free.fr>\n\n  format placeholders in italics and keywords in monospace\n- Use _<placeholder>_ instead of <placeholder> in the description\n- Use `backticks` for keywords and more complex option\ndescriptions. The new rendering engine will apply synopsis rules to\nthese spans.\n\nSigned-off-by: Jean-Noël Avila <jn.avila@free.fr>\n---\n Documentation/line-range-options.adoc | 10 +++++-----\n 1 file changed, 5 insertions(+), 5 deletions(-)\n\ndiff --git a/Documentation/line-range-options.adoc b/Documentation/line-range-options.adoc\nindex f275df3b69fa..c44ba05320f9 100644\n--- a/Documentation/line-range-options.adoc\n+++ b/Documentation/line-range-options.adoc\n@@ -1,12 +1,12 @@\n--L<start>,<end>:<file>::\n--L:<funcname>:<file>::\n+`-L<start>,<end>:<file>`::\n+`-L:<funcname>:<file>`::\n \n-\tTrace the evolution of the line range given by '<start>,<end>',\n-\tor by the function name regex '<funcname>', within the '<file>'. You may\n+\tTrace the evolution of the line range given by `<start>,<end>`,\n+\tor by the function name regex _<funcname>_, within the _<file>_. You may\n \tnot give any pathspec limiters.  This is currently limited to\n \ta walk starting from a single revision, i.e., you may only\n \tgive zero or one positive revision arguments, and\n-\t'<start>' and '<end>' (or '<funcname>') must exist in the starting revision.\n+\t_<start>_ and _<end>_ (or _<funcname>_) must exist in the starting revision.\n \tYou can specify this option more than once. Implies `--patch`.\n \tPatch output can be suppressed using `--no-patch`, but other diff formats\n \t(namely `--raw`, `--numstat`, `--shortstat`, `--dirstat`, `--summary`,\n-- \ngitgitgadget\n\n"},{"id":"521464","messageId":"a4ac3ea53066b12ca237e208fb5594923e181363.1751914412.git.gitgitgadget@gmail.com","threadId":"63603","inReplyTo":"pull.1933.v3.git.1751914412.gitgitgadget@gmail.com","subject":"[PATCH v3 4/9] doc: git-log: convert line range format to new doc format","fromName":"Jean-Noël Avila via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2025-07-07T18:53:27Z","receivedAt":"2025-07-07T18:53:40Z","isPatch":true,"sender":{"key":"jn.avila@free.fr","avatar":"https://avatars.githubusercontent.com/u/156172?v=4"},"body":"From: =?UTF-8?q?Jean-No=C3=ABl=20Avila?= <jn.avila@free.fr>\n\n- Use _<placeholder>_ instead of <placeholder> in the description\n- Use `backticks` for keywords and more complex option\ndescriptions. The new rendering engine will apply synopsis rules to\nthese spans.\n\nSigned-off-by: Jean-Noël Avila <jn.avila@free.fr>\n---\n Documentation/line-range-format.adoc | 26 +++++++++++++-------------\n 1 file changed, 13 insertions(+), 13 deletions(-)\n\ndiff --git a/Documentation/line-range-format.adoc b/Documentation/line-range-format.adoc\nindex 9b51e9fb6614..3cc2a14544cf 100644\n--- a/Documentation/line-range-format.adoc\n+++ b/Documentation/line-range-format.adoc\n@@ -1,30 +1,30 @@\n-'<start>' and '<end>' can take one of these forms:\n+_<start>_ and _<end>_ can take one of these forms:\n \n-- number\n+- _<number>_\n +\n-If '<start>' or '<end>' is a number, it specifies an\n+If _<start>_ or _<end>_ is a number, it specifies an\n absolute line number (lines count from 1).\n +\n \n-- `/regex/`\n+- `/<regex>/`\n +\n This form will use the first line matching the given\n-POSIX regex. If '<start>' is a regex, it will search from the end of\n+POSIX _<regex>_. If _<start>_ is a regex, it will search from the end of\n the previous `-L` range, if any, otherwise from the start of file.\n-If '<start>' is `^/regex/`, it will search from the start of file.\n-If '<end>' is a regex, it will search\n-starting at the line given by '<start>'.\n+If _<start>_ is `^/<regex>/`, it will search from the start of file.\n+If _<end>_ is a regex, it will search starting at the line given by\n+_<start>_.\n +\n \n-- +offset or -offset\n+- `+<offset>` or `-<offset>`\n +\n-This is only valid for '<end>' and will specify a number\n-of lines before or after the line given by '<start>'.\n+This is only valid for _<end>_ and will specify a number\n+of lines before or after the line given by _<start>_.\n \n +\n-If `:<funcname>` is given in place of '<start>' and '<end>', it is a\n+If `:<funcname>` is given in place of _<start>_ and _<end>_, it is a\n regular expression that denotes the range from the first funcname line\n-that matches '<funcname>', up to the next funcname line. `:<funcname>`\n+that matches _<funcname>_, up to the next funcname line. `:<funcname>`\n searches from the end of the previous `-L` range, if any, otherwise\n from the start of file. `^:<funcname>` searches from the start of\n file. The function names are determined in the same way as `git diff`\n-- \ngitgitgadget\n\n"},{"id":"521465","messageId":"b860561069dfaad419ba36d375f54018638df859.1751914412.git.gitgitgadget@gmail.com","threadId":"63603","inReplyTo":"pull.1933.v3.git.1751914412.gitgitgadget@gmail.com","subject":"[PATCH v3 6/9] doc: git-log: convert pretty options to new doc format","fromName":"Jean-Noël Avila via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2025-07-07T18:53:29Z","receivedAt":"2025-07-07T18:53:42Z","isPatch":true,"sender":{"key":"jn.avila@free.fr","avatar":"https://avatars.githubusercontent.com/u/156172?v=4"},"body":"From: =?UTF-8?q?Jean-No=C3=ABl=20Avila?= <jn.avila@free.fr>\n\n- Use _<placeholder>_ instead of <placeholder> in the description\n- Use `backticks` for keywords and more complex option\ndescriptions. The new rendering engine will apply synopsis rules to\nthese spans.\n\nSigned-off-by: Jean-Noël Avila <jn.avila@free.fr>\n---\n Documentation/pretty-options.adoc | 71 ++++++++++++++++---------------\n 1 file changed, 36 insertions(+), 35 deletions(-)\n\ndiff --git a/Documentation/pretty-options.adoc b/Documentation/pretty-options.adoc\nindex b36e96abe28a..8aac51dbe7e9 100644\n--- a/Documentation/pretty-options.adoc\n+++ b/Documentation/pretty-options.adoc\n@@ -1,38 +1,38 @@\n---pretty[=<format>]::\n---format=<format>::\n+`--pretty[=<format>]`::\n+`--format=<format>`::\n \n \tPretty-print the contents of the commit logs in a given format,\n-\twhere '<format>' can be one of 'oneline', 'short', 'medium',\n-\t'full', 'fuller', 'reference', 'email', 'raw', 'format:<string>'\n-\tand 'tformat:<string>'.  When '<format>' is none of the above,\n-\tand has '%placeholder' in it, it acts as if\n-\t'--pretty=tformat:<format>' were given.\n+\twhere '<format>' can be one of `oneline`, `short`, `medium`,\n+\t`full`, `fuller`, `reference`, `email`, `raw`, `format:<string>`\n+\tand `tformat:<string>`.  When _<format>_ is none of the above,\n+\tand has `%<placeholder>` in it, it acts as if\n+\t`--pretty=tformat:<format>` were given.\n +\n See the \"PRETTY FORMATS\" section for some additional details for each\n-format.  When '=<format>' part is omitted, it defaults to 'medium'.\n+format.  When `=<format>` part is omitted, it defaults to `medium`.\n +\n-Note: you can specify the default pretty format in the repository\n+NOTE: you can specify the default pretty format in the repository\n configuration (see linkgit:git-config[1]).\n \n---abbrev-commit::\n+`--abbrev-commit`::\n \tInstead of showing the full 40-byte hexadecimal commit object\n \tname, show a prefix that names the object uniquely.\n-\t\"--abbrev=<n>\" (which also modifies diff output, if it is displayed)\n+\t`--abbrev=<n>` (which also modifies diff output, if it is displayed)\n \toption can be used to specify the minimum length of the prefix.\n +\n-This should make \"--pretty=oneline\" a whole lot more readable for\n+This should make `--pretty=oneline` a whole lot more readable for\n people using 80-column terminals.\n \n---no-abbrev-commit::\n+`--no-abbrev-commit`::\n \tShow the full 40-byte hexadecimal commit object name. This negates\n \t`--abbrev-commit`, either explicit or implied by other options such\n-\tas \"--oneline\". It also overrides the `log.abbrevCommit` variable.\n+\tas `--oneline`. It also overrides the `log.abbrevCommit` variable.\n \n---oneline::\n-\tThis is a shorthand for \"--pretty=oneline --abbrev-commit\"\n+`--oneline`::\n+\tThis is a shorthand for `--pretty=oneline --abbrev-commit`\n \tused together.\n \n---encoding=<encoding>::\n+`--encoding=<encoding>`::\n \tCommit objects record the character encoding used for the log message\n \tin their encoding header; this option can be used to tell the\n \tcommand to re-code the commit log message in the encoding\n@@ -44,22 +44,22 @@ people using 80-column terminals.\n \tto convert the commit, we will quietly output the original\n \tobject verbatim.\n \n---expand-tabs=<n>::\n---expand-tabs::\n---no-expand-tabs::\n+`--expand-tabs=<n>`::\n+`--expand-tabs`::\n+`--no-expand-tabs`::\n \tPerform a tab expansion (replace each tab with enough spaces\n-\tto fill to the next display column that is a multiple of '<n>')\n+\tto fill to the next display column that is a multiple of _<n>_)\n \tin the log message before showing it in the output.\n \t`--expand-tabs` is a short-hand for `--expand-tabs=8`, and\n \t`--no-expand-tabs` is a short-hand for `--expand-tabs=0`,\n \twhich disables tab expansion.\n +\n By default, tabs are expanded in pretty formats that indent the log\n-message by 4 spaces (i.e.  'medium', which is the default, 'full',\n-and 'fuller').\n+message by 4 spaces (i.e.  `medium`, which is the default, `full`,\n+and `fuller`).\n \n ifndef::git-rev-list[]\n---notes[=<ref>]::\n+`--notes[=<ref>]`::\n \tShow the notes (see linkgit:git-notes[1]) that annotate the\n \tcommit, when showing the commit log message.  This is the default\n ifndef::with-breaking-changes[]\n@@ -80,28 +80,29 @@ to display.  The ref can specify the full refname when it begins\n with `refs/notes/`; when it begins with `notes/`, `refs/` and otherwise\n `refs/notes/` is prefixed to form the full name of the ref.\n +\n-Multiple --notes options can be combined to control which notes are\n-being displayed. Examples: \"--notes=foo\" will show only notes from\n-\"refs/notes/foo\"; \"--notes=foo --notes\" will show both notes from\n+Multiple `--notes` options can be combined to control which notes are\n+being displayed. Examples: \"`--notes=foo`\" will show only notes from\n+`refs/notes/foo`; \"`--notes=foo --notes`\" will show both notes from\n \"refs/notes/foo\" and from the default notes ref(s).\n \n---no-notes::\n+`--no-notes`::\n \tDo not show notes. This negates the above `--notes` option, by\n \tresetting the list of notes refs from which notes are shown.\n \tOptions are parsed in the order given on the command line, so e.g.\n-\t\"--notes --notes=foo --no-notes --notes=bar\" will only show notes\n-\tfrom \"refs/notes/bar\".\n+\t\"`--notes --notes=foo --no-notes --notes=bar`\" will only show notes\n+\tfrom `refs/notes/bar`.\n \n---show-notes-by-default::\n+`--show-notes-by-default`::\n \tShow the default notes unless options for displaying specific\n \tnotes are given.\n \n---show-notes[=<ref>]::\n---[no-]standard-notes::\n-\tThese options are deprecated. Use the above --notes/--no-notes\n+`--show-notes[=<ref>]`::\n+`--standard-notes`::\n+`--no-standard-notes`::\n+\tThese options are deprecated. Use the above `--notes`/`--no-notes`\n \toptions instead.\n endif::git-rev-list[]\n \n---show-signature::\n+`--show-signature`::\n \tCheck the validity of a signed commit object by passing the signature\n \tto `gpg --verify` and show the output.\n-- \ngitgitgadget\n\n"},{"id":"521468","messageId":"1eb897ee9adc5d38f0f0f07acc20ff176009717a.1751914412.git.gitgitgadget@gmail.com","threadId":"63603","inReplyTo":"pull.1933.v3.git.1751914412.gitgitgadget@gmail.com","subject":"[PATCH v3 5/9] doc: git-log: convert rev list options to new doc format","fromName":"Jean-Noël Avila via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2025-07-07T18:53:28Z","receivedAt":"2025-07-07T18:53:42Z","isPatch":true,"sender":{"key":"jn.avila@free.fr","avatar":"https://avatars.githubusercontent.com/u/156172?v=4"},"body":"From: =?UTF-8?q?Jean-No=C3=ABl=20Avila?= <jn.avila@free.fr>\n\n- Fix some malformed synopis of options\n- Use _<placeholder>_ instead of <placeholder> in the description\n- Use `backticks` for keywords and more complex option\ndescriptions. The new rendering engine will apply synopsis rules to\nthese spans.\n- Add the '%' sign to the characters of keywords.\n\nSigned-off-by: Jean-Noël Avila <jn.avila@free.fr>\n---\n Documentation/asciidoc.conf.in             |   2 +-\n Documentation/asciidoctor-extensions.rb.in |   4 +-\n Documentation/rev-list-options.adoc        | 390 ++++++++++-----------\n 3 files changed, 198 insertions(+), 198 deletions(-)\n\ndiff --git a/Documentation/asciidoc.conf.in b/Documentation/asciidoc.conf.in\nindex 9d9139306e6f..ff9ea0a29445 100644\n--- a/Documentation/asciidoc.conf.in\n+++ b/Documentation/asciidoc.conf.in\n@@ -43,7 +43,7 @@ ifdef::doctype-book[]\n endif::doctype-book[]\n \n [literal-inlinemacro]\n-{eval:re.sub(r'(&lt;[-a-zA-Z0-9.]+&gt;)', r'<emphasis>\\1</emphasis>', re.sub(r'([\\[\\s|()>]|^|\\]|&gt;)(\\.?([-a-zA-Z0-9:+=~@\\\\\\*\\/_^\\$]+\\.?)+|,)',r'\\1<literal>\\2</literal>', re.sub(r'(\\.\\.\\.?)([^\\]$.])', r'<literal>\\1</literal>\\2', macros.passthroughs[int(attrs['passtext'][1:-1])] if attrs['passtext'][1:-1].isnumeric() else attrs['passtext'][1:-1])))}\n+{eval:re.sub(r'(&lt;[-a-zA-Z0-9.]+&gt;)', r'<emphasis>\\1</emphasis>', re.sub(r'([\\[\\s|()>]|^|\\]|&gt;)(\\.?([-a-zA-Z0-9:+=~@\\\\\\*\\/_^\\$%]+\\.?)+|,)',r'\\1<literal>\\2</literal>', re.sub(r'(\\.\\.\\.?)([^\\]$.])', r'<literal>\\1</literal>\\2', macros.passthroughs[int(attrs['passtext'][1:-1])] if attrs['passtext'][1:-1].isnumeric() else attrs['passtext'][1:-1])))}\n \n endif::backend-docbook[]\n \ndiff --git a/Documentation/asciidoctor-extensions.rb.in b/Documentation/asciidoctor-extensions.rb.in\nindex 8b7b16134967..fe64a62d9683 100644\n--- a/Documentation/asciidoctor-extensions.rb.in\n+++ b/Documentation/asciidoctor-extensions.rb.in\n@@ -73,7 +73,7 @@ module Git\n         elsif type == :monospaced\n           node.text.gsub(/(\\.\\.\\.?)([^\\]$\\.])/, '<literal>\\1</literal>\\2')\n               .gsub(/^\\.\\.\\.?$/, '<literal>\\0</literal>')\n-              .gsub(%r{([\\[\\s|()>.]|^|\\]|&gt;)(\\.?([-a-zA-Z0-9:+=~@/_^\\$\\\\\\*]+\\.{0,2})+|,)}, '\\1<literal>\\2</literal>')\n+              .gsub(%r{([\\[\\s|()>.]|^|\\]|&gt;)(\\.?([-a-zA-Z0-9:+=~@/_^\\$\\\\\\*%]+\\.{0,2})+|,)}, '\\1<literal>\\2</literal>')\n               .gsub(/(&lt;[-a-zA-Z0-9.]+&gt;)/, '<emphasis>\\1</emphasis>')\n         else\n           open, close, supports_phrase = QUOTE_TAGS[type]\n@@ -102,7 +102,7 @@ module Git\n         if node.type == :monospaced\n           node.text.gsub(/(\\.\\.\\.?)([^\\]$.])/, '<code>\\1</code>\\2')\n               .gsub(/^\\.\\.\\.?$/, '<code>\\0</code>')\n-              .gsub(%r{([\\[\\s|()>.]|^|\\]|&gt;)(\\.?([-a-zA-Z0-9:+=~@,/_^\\$\\\\\\*]+\\.{0,2})+)}, '\\1<code>\\2</code>')\n+              .gsub(%r{([\\[\\s|()>.]|^|\\]|&gt;)(\\.?([-a-zA-Z0-9:+=~@,/_^\\$\\\\\\*%]+\\.{0,2})+)}, '\\1<code>\\2</code>')\n               .gsub(/(&lt;[-a-zA-Z0-9.]+&gt;)/, '<em>\\1</em>')\n \n         else\ndiff --git a/Documentation/rev-list-options.adoc b/Documentation/rev-list-options.adoc\nindex ae8765644c87..d9665d82c8df 100644\n--- a/Documentation/rev-list-options.adoc\n+++ b/Documentation/rev-list-options.adoc\n@@ -6,60 +6,60 @@ special notations explained in the description, additional commit\n limiting may be applied.\n \n Using more options generally further limits the output (e.g.\n-`--since=<date1>` limits to commits newer than `<date1>`, and using it\n+`--since=<date1>` limits to commits newer than _<date1>_, and using it\n with `--grep=<pattern>` further limits to commits whose log message\n-has a line that matches `<pattern>`), unless otherwise noted.\n+has a line that matches _<pattern>_), unless otherwise noted.\n \n Note that these are applied before commit\n ordering and formatting options, such as `--reverse`.\n \n--<number>::\n--n <number>::\n---max-count=<number>::\n-\tLimit the number of commits to output.\n+`-<number>`::\n+`-n <number>`::\n+`--max-count=<number>`::\n+\tLimit the output to _<number>_ commits.\n \n---skip=<number>::\n-\tSkip 'number' commits before starting to show the commit output.\n+`--skip=<number>`::\n+\tSkip _<number>_ commits before starting to show the commit output.\n \n---since=<date>::\n---after=<date>::\n-\tShow commits more recent than a specific date.\n+`--since=<date>`::\n+`--after=<date>`::\n+\tShow commits more recent than _<date>_.\n \n---since-as-filter=<date>::\n-\tShow all commits more recent than a specific date. This visits\n+`--since-as-filter=<date>`::\n+\tShow all commits more recent than _<date>_. This visits\n \tall commits in the range, rather than stopping at the first commit which\n-\tis older than a specific date.\n+\tis older than _<date>_.\n \n---until=<date>::\n---before=<date>::\n-\tShow commits older than a specific date.\n+`--until=<date>`::\n+`--before=<date>`::\n+\tShow commits older than _<date>_.\n \n ifdef::git-rev-list[]\n---max-age=<timestamp>::\n---min-age=<timestamp>::\n+`--max-age=<timestamp>`::\n+`--min-age=<timestamp>`::\n \tLimit the commits output to specified time range.\n endif::git-rev-list[]\n \n---author=<pattern>::\n---committer=<pattern>::\n+`--author=<pattern>`::\n+`--committer=<pattern>`::\n \tLimit the commits output to ones with author/committer\n-\theader lines that match the specified pattern (regular\n-\texpression).  With more than one `--author=<pattern>`,\n-\tcommits whose author matches any of the given patterns are\n+\theader lines that match the _<pattern>_ regular\n+\texpression.  With more than one `--author=<pattern>`,\n+\tcommits whose author matches any of the _<pattern>_ are\n \tchosen (similarly for multiple `--committer=<pattern>`).\n \n---grep-reflog=<pattern>::\n+`--grep-reflog=<pattern>`::\n \tLimit the commits output to ones with reflog entries that\n-\tmatch the specified pattern (regular expression). With\n+\tmatch the _<pattern>_ regular expression. With\n \tmore than one `--grep-reflog`, commits whose reflog message\n \tmatches any of the given patterns are chosen.  It is an\n \terror to use this option unless `--walk-reflogs` is in use.\n \n---grep=<pattern>::\n+`--grep=<pattern>`::\n \tLimit the commits output to ones with a log message that\n-\tmatches the specified pattern (regular expression).  With\n+\tmatches the _<pattern>_ regular expression.  With\n \tmore than one `--grep=<pattern>`, commits whose message\n-\tmatches any of the given patterns are chosen (but see\n+\tmatches any of the _<pattern>_ are chosen (but see\n \t`--all-match`).\n ifndef::git-rev-list[]\n +\n@@ -67,35 +67,35 @@ When `--notes` is in effect, the message from the notes is\n matched as if it were part of the log message.\n endif::git-rev-list[]\n \n---all-match::\n+`--all-match`::\n \tLimit the commits output to ones that match all given `--grep`,\n \tinstead of ones that match at least one.\n \n---invert-grep::\n+`--invert-grep`::\n \tLimit the commits output to ones with a log message that do not\n-\tmatch the pattern specified with `--grep=<pattern>`.\n+\tmatch the _<pattern>_ specified with `--grep=<pattern>`.\n \n--i::\n---regexp-ignore-case::\n+`-i`::\n+`--regexp-ignore-case`::\n \tMatch the regular expression limiting patterns without regard to letter\n \tcase.\n \n---basic-regexp::\n+`--basic-regexp`::\n \tConsider the limiting patterns to be basic regular expressions;\n \tthis is the default.\n \n--E::\n---extended-regexp::\n+`-E`::\n+`--extended-regexp`::\n \tConsider the limiting patterns to be extended regular expressions\n \tinstead of the default basic regular expressions.\n \n--F::\n---fixed-strings::\n+`-F`::\n+`--fixed-strings`::\n \tConsider the limiting patterns to be fixed strings (don't interpret\n \tpattern as a regular expression).\n \n--P::\n---perl-regexp::\n+`-P`::\n+`--perl-regexp`::\n \tConsider the limiting patterns to be Perl-compatible regular\n \texpressions.\n +\n@@ -103,20 +103,20 @@ Support for these types of regular expressions is an optional\n compile-time dependency. If Git wasn't compiled with support for them\n providing this option will cause it to die.\n \n---remove-empty::\n+`--remove-empty`::\n \tStop when a given path disappears from the tree.\n \n---merges::\n+`--merges`::\n \tPrint only merge commits. This is exactly the same as `--min-parents=2`.\n \n---no-merges::\n+`--no-merges`::\n \tDo not print commits with more than one parent. This is\n \texactly the same as `--max-parents=1`.\n \n---min-parents=<number>::\n---max-parents=<number>::\n---no-min-parents::\n---no-max-parents::\n+`--min-parents=<number>`::\n+`--max-parents=<number>`::\n+`--no-min-parents`::\n+`--no-max-parents`::\n \tShow only commits which have at least (or at most) that many parent\n \tcommits. In particular, `--max-parents=1` is the same as `--no-merges`,\n \t`--min-parents=2` is the same as `--merges`.  `--max-parents=0`\n@@ -126,7 +126,7 @@ providing this option will cause it to die.\n again.  Equivalent forms are `--min-parents=0` (any commit has 0 or more\n parents) and `--max-parents=-1` (negative numbers denote no upper limit).\n \n---first-parent::\n+`--first-parent`::\n \tWhen finding commits to include, follow only the first\n \tparent commit upon seeing a merge commit.  This option\n \tcan give a better overview when viewing the evolution of\n@@ -141,14 +141,14 @@ This option also changes default diff format for merge commits\n to `first-parent`, see `--diff-merges=first-parent` for details.\n endif::git-log[]\n \n---exclude-first-parent-only::\n+`--exclude-first-parent-only`::\n \tWhen finding commits to exclude (with a '{caret}'), follow only\n \tthe first parent commit upon seeing a merge commit.\n \tThis can be used to find the set of changes in a topic branch\n \tfrom the point where it diverged from the remote branch, given\n \tthat arbitrary merges can be valid topic branch changes.\n \n---not::\n+`--not`::\n \tReverses the meaning of the '{caret}' prefix (or lack thereof)\n \tfor all following revision specifiers, up to the next `--not`.\n \tWhen used on the command line before --stdin, the revisions passed\n@@ -156,37 +156,37 @@ endif::git-log[]\n \tvia standard input, the revisions passed on the command line will\n \tnot be affected by it.\n \n---all::\n+`--all`::\n \tPretend as if all the refs in `refs/`, along with `HEAD`, are\n-\tlisted on the command line as '<commit>'.\n+\tlisted on the command line as _<commit>_.\n \n---branches[=<pattern>]::\n+`--branches[=<pattern>]`::\n \tPretend as if all the refs in `refs/heads` are listed\n-\ton the command line as '<commit>'. If '<pattern>' is given, limit\n-\tbranches to ones matching given shell glob. If pattern lacks '?',\n+\ton the command line as _<commit>_. If _<pattern>_ is given, limit\n+\tbranches to ones matching given shell glob. If _<pattern>_ lacks '?',\n \t'{asterisk}', or '[', '/{asterisk}' at the end is implied.\n \n---tags[=<pattern>]::\n+`--tags[=<pattern>]`::\n \tPretend as if all the refs in `refs/tags` are listed\n-\ton the command line as '<commit>'. If '<pattern>' is given, limit\n+\ton the command line as _<commit>_. If _<pattern>_ is given, limit\n \ttags to ones matching given shell glob. If pattern lacks '?', '{asterisk}',\n \tor '[', '/{asterisk}' at the end is implied.\n \n---remotes[=<pattern>]::\n+`--remotes[=<pattern>]`::\n \tPretend as if all the refs in `refs/remotes` are listed\n-\ton the command line as '<commit>'. If '<pattern>' is given, limit\n+\ton the command line as _<commit>_. If _<pattern>_ is given, limit\n \tremote-tracking branches to ones matching given shell glob.\n \tIf pattern lacks '?', '{asterisk}', or '[', '/{asterisk}' at the end is implied.\n \n---glob=<glob-pattern>::\n-\tPretend as if all the refs matching shell glob '<glob-pattern>'\n-\tare listed on the command line as '<commit>'. Leading 'refs/',\n+`--glob=<glob-pattern>`::\n+\tPretend as if all the refs matching shell glob _<glob-pattern>_\n+\tare listed on the command line as _<commit>_. Leading 'refs/',\n \tis automatically prepended if missing. If pattern lacks '?', '{asterisk}',\n \tor '[', '/{asterisk}' at the end is implied.\n \n---exclude=<glob-pattern>::\n+`--exclude=<glob-pattern>`::\n \n-\tDo not include refs matching '<glob-pattern>' that the next `--all`,\n+\tDo not include refs matching _<glob-pattern>_ that the next `--all`,\n \t`--branches`, `--tags`, `--remotes`, or `--glob` would otherwise\n \tconsider. Repetitions of this option accumulate exclusion patterns\n \tup to the next `--all`, `--branches`, `--tags`, `--remotes`, or\n@@ -199,7 +199,7 @@ respectively, and they must begin with `refs/` when applied to `--glob`\n or `--all`. If a trailing '/{asterisk}' is intended, it must be given\n explicitly.\n \n---exclude-hidden=[fetch|receive|uploadpack]::\n+`--exclude-hidden=(fetch|receive|uploadpack)`::\n \tDo not include refs that would be hidden by `git-fetch`,\n \t`git-receive-pack` or `git-upload-pack` by consulting the appropriate\n \t`fetch.hideRefs`, `receive.hideRefs` or `uploadpack.hideRefs`\n@@ -207,11 +207,11 @@ explicitly.\n \tlinkgit:git-config[1]). This option affects the next pseudo-ref option\n \t`--all` or `--glob` and is cleared after processing them.\n \n---reflog::\n+`--reflog`::\n \tPretend as if all objects mentioned by reflogs are listed on the\n-\tcommand line as `<commit>`.\n+\tcommand line as _<commit>_.\n \n---alternate-refs::\n+`--alternate-refs`::\n \tPretend as if all objects mentioned as ref tips of alternate\n \trepositories were listed on the command line. An alternate\n \trepository is any repository whose object directory is specified\n@@ -219,7 +219,7 @@ explicitly.\n \tbe modified by `core.alternateRefsCommand`, etc. See\n \tlinkgit:git-config[1].\n \n---single-worktree::\n+`--single-worktree`::\n \tBy default, all working trees will be examined by the\n \tfollowing options when there are more than one (see\n \tlinkgit:git-worktree[1]): `--all`, `--reflog` and\n@@ -227,19 +227,19 @@ explicitly.\n \tThis option forces them to examine the current working tree\n \tonly.\n \n---ignore-missing::\n+`--ignore-missing`::\n \tUpon seeing an invalid object name in the input, pretend as if\n \tthe bad input was not given.\n \n ifndef::git-rev-list[]\n---bisect::\n+`--bisect`::\n \tPretend as if the bad bisection ref `refs/bisect/bad`\n \twas listed and as if it was followed by `--not` and the good\n \tbisection refs `refs/bisect/good-*` on the command\n \tline.\n endif::git-rev-list[]\n \n---stdin::\n+`--stdin`::\n \tIn addition to getting arguments from the command line, read\n \tthem from standard input as well. This accepts commits and\n \tpseudo-options like `--all` and `--glob=`. When a `--` separator\n@@ -249,15 +249,15 @@ endif::git-rev-list[]\n \tinfluence any subsequent command line arguments.\n \n ifdef::git-rev-list[]\n---quiet::\n+`--quiet`::\n \tDon't print anything to standard output.  This form\n \tis primarily meant to allow the caller to\n \ttest the exit status to see if a range of objects is fully\n \tconnected (or not).  It is faster than redirecting stdout\n \tto `/dev/null` as the output does not have to be formatted.\n \n---disk-usage::\n---disk-usage=human::\n+`--disk-usage`::\n+`--disk-usage=human`::\n \tSuppress normal output; instead, print the sum of the bytes used\n \tfor on-disk storage by the selected commits or objects. This is\n \tequivalent to piping the output into `git cat-file\n@@ -269,11 +269,11 @@ ifdef::git-rev-list[]\n \tin human-readable string(e.g. 12.24 Kib, 3.50 Mib).\n endif::git-rev-list[]\n \n---cherry-mark::\n+`--cherry-mark`::\n \tLike `--cherry-pick` (see below) but mark equivalent commits\n \twith `=` rather than omitting them, and inequivalent ones with `+`.\n \n---cherry-pick::\n+`--cherry-pick`::\n \tOmit any commit that introduces the same change as\n \tanother commit on the ``other side'' when the set of\n \tcommits are limited with symmetric difference.\n@@ -286,8 +286,8 @@ cherry-picked from the other branch (for example, ``3rd on b'' may be\n cherry-picked from branch A). With this option, such pairs of commits are\n excluded from the output.\n \n---left-only::\n---right-only::\n+`--left-only`::\n+`--right-only`::\n \tList only commits on the respective side of a symmetric difference,\n \ti.e. only those which would be marked `<` resp. `>` by\n \t`--left-right`.\n@@ -298,20 +298,20 @@ commits from `B` which are in `A` or are patch-equivalent to a commit in\n More precisely, `--cherry-pick --right-only --no-merges` gives the exact\n list.\n \n---cherry::\n+`--cherry`::\n \tA synonym for `--right-only --cherry-mark --no-merges`; useful to\n \tlimit the output to the commits on our side and mark those that\n \thave been applied to the other side of a forked history with\n \t`git log --cherry upstream...mybranch`, similar to\n \t`git cherry upstream mybranch`.\n \n--g::\n---walk-reflogs::\n+`-g`::\n+`--walk-reflogs`::\n \tInstead of walking the commit ancestry chain, walk\n \treflog entries from the most recent one to older ones.\n \tWhen this option is used you cannot specify commits to\n-\texclude (that is, '{caret}commit', 'commit1..commit2',\n-\tand 'commit1\\...commit2' notations cannot be used).\n+\texclude (that is, `^<commit>`, `<commit1>..<commit2>`,\n+\tand `<commit1>...<commit2>` notations cannot be used).\n +\n With `--pretty` format other than `oneline` and `reference` (for obvious reasons),\n this causes the output to have two extra lines of information\n@@ -340,29 +340,29 @@ See also linkgit:git-reflog[1].\n +\n Under `--pretty=reference`, this information will not be shown at all.\n \n---merge::\n+`--merge`::\n \tShow commits touching conflicted paths in the range `HEAD...<other>`,\n \twhere `<other>` is the first existing pseudoref in `MERGE_HEAD`,\n \t`CHERRY_PICK_HEAD`, `REVERT_HEAD` or `REBASE_HEAD`. Only works\n \twhen the index has unmerged entries. This option can be used to show\n \trelevant commits when resolving conflicts from a 3-way merge.\n \n---boundary::\n+`--boundary`::\n \tOutput excluded boundary commits. Boundary commits are\n \tprefixed with `-`.\n \n ifdef::git-rev-list[]\n---use-bitmap-index::\n+`--use-bitmap-index`::\n \n \tTry to speed up the traversal using the pack bitmap index (if\n \tone is available). Note that when traversing with `--objects`,\n \ttrees and blobs will not have their associated path printed.\n \n---progress=<header>::\n+`--progress=<header>`::\n \tShow progress reports on stderr as objects are considered. The\n \t`<header>` text will be printed with each progress update.\n \n--z::\n+`-z`::\n \tInstead of being newline-delimited, each outputted object and its\n \taccompanying metadata is delimited using NUL bytes. Output is printed\n \tin the following form:\n@@ -397,56 +397,56 @@ is how to do it, as there are various strategies to simplify the history.\n \n The following options select the commits to be shown:\n \n-<paths>::\n+`<paths>`::\n \tCommits modifying the given <paths> are selected.\n \n---simplify-by-decoration::\n+`--simplify-by-decoration`::\n \tCommits that are referred by some branch or tag are selected.\n \n Note that extra commits can be shown to give a meaningful history.\n \n The following options affect the way the simplification is performed:\n \n-Default mode::\n+`Default mode`::\n \tSimplifies the history to the simplest history explaining the\n \tfinal state of the tree. Simplest because it prunes some side\n \tbranches if the end result is the same (i.e. merging branches\n \twith the same content)\n \n---show-pulls::\n+`--show-pulls`::\n \tInclude all commits from the default mode, but also any merge\n \tcommits that are not TREESAME to the first parent but are\n \tTREESAME to a later parent. This mode is helpful for showing\n \tthe merge commits that \"first introduced\" a change to a branch.\n \n---full-history::\n+`--full-history`::\n \tSame as the default mode, but does not prune some history.\n \n---dense::\n+`--dense`::\n \tOnly the selected commits are shown, plus some to have a\n \tmeaningful history.\n \n---sparse::\n+`--sparse`::\n \tAll commits in the simplified history are shown.\n \n---simplify-merges::\n+`--simplify-merges`::\n \tAdditional option to `--full-history` to remove some needless\n \tmerges from the resulting history, as there are no selected\n \tcommits contributing to this merge.\n \n---ancestry-path[=<commit>]::\n-\tWhen given a range of commits to display (e.g. 'commit1..commit2'\n-\tor 'commit2 {caret}commit1'), and a commit <commit> in that range,\n+`--ancestry-path[=<commit>]`::\n+\tWhen given a range of commits to display (e.g. `<commit1>..<commit2>`\n+\tor `<commit2> ^<commit1>`), and a commit _<commit>_ in that range,\n \tonly display commits in that range\n-\tthat are ancestors of <commit>, descendants of <commit>, or\n-\t<commit> itself.  If no commit is specified, use 'commit1' (the\n-\texcluded part of the range) as <commit>.  Can be passed multiple\n+\tthat are ancestors of _<commit>_, descendants of _<commit>_, or\n+\t_<commit>_ itself.  If no commit is specified, use _<commit1>_ (the\n+\texcluded part of the range) as _<commit>_.  Can be passed multiple\n \ttimes; if so, a commit is included if it is any of the commits\n \tgiven or if it is an ancestor or descendant of one of them.\n \n A more detailed explanation follows.\n \n-Suppose you specified `foo` as the <paths>.  We shall call commits\n+Suppose you specified `foo` as the _<paths>_.  We shall call commits\n that modify `foo` !TREESAME, and the rest TREESAME.  (In a diff\n filtered for `foo`, they look different and equal, respectively.)\n \n@@ -466,22 +466,22 @@ The horizontal line of history A---Q is taken to be the first parent of\n each merge.  The commits are:\n \n * `I` is the initial commit, in which `foo` exists with contents\n-  ``asdf'', and a file `quux` exists with contents ``quux''. Initial\n+  `asdf`, and a file `quux` exists with contents `quux`. Initial\n   commits are compared to an empty tree, so `I` is !TREESAME.\n \n-* In `A`, `foo` contains just ``foo''.\n+* In `A`, `foo` contains just `foo`.\n \n * `B` contains the same change as `A`.  Its merge `M` is trivial and\n   hence TREESAME to all parents.\n \n-* `C` does not change `foo`, but its merge `N` changes it to ``foobar'',\n+* `C` does not change `foo`, but its merge `N` changes it to `foobar`,\n   so it is not TREESAME to any parent.\n \n-* `D` sets `foo` to ``baz''. Its merge `O` combines the strings from\n-  `N` and `D` to ``foobarbaz''; i.e., it is not TREESAME to any parent.\n+* `D` sets `foo` to `baz`. Its merge `O` combines the strings from\n+  `N` and `D` to `foobarbaz`; i.e., it is not TREESAME to any parent.\n \n-* `E` changes `quux` to ``xyzzy'', and its merge `P` combines the\n-  strings to ``quux xyzzy''. `P` is TREESAME to `O`, but not to `E`.\n+* `E` changes `quux` to `xyzzy`, and its merge `P` combines the\n+  strings to `quux xyzzy`. `P` is TREESAME to `O`, but not to `E`.\n \n * `X` is an independent root commit that added a new file `side`, and `Y`\n   modified it. `Y` is TREESAME to `X`. Its merge `Q` added `side` to `P`, and\n@@ -517,7 +517,7 @@ Parent/child relations are only visible with `--parents`, but that does\n not affect the commits selected in default mode, so we have shown the\n parent lines.\n \n---full-history without parent rewriting::\n+`--full-history` without parent rewriting::\n \tThis mode differs from the default in one point: always follow\n \tall parents of a merge, even if it is TREESAME to one of them.\n \tEven if more than one side of the merge has commits that are\n@@ -536,7 +536,7 @@ Note that without parent rewriting, it is not really possible to talk\n about the parent/child relationships between the commits, so we show\n them disconnected.\n \n---full-history with parent rewriting::\n+`--full-history` with parent rewriting::\n \tOrdinary commits are only included if they are !TREESAME\n \t(though this can be changed, see `--sparse` below).\n +\n@@ -560,18 +560,18 @@ rewritten to contain `E`'s parent `I`.  The same happened for `C` and\n In addition to the above settings, you can change whether TREESAME\n affects inclusion:\n \n---dense::\n+`--dense`::\n \tCommits that are walked are included if they are not TREESAME\n \tto any parent.\n \n---sparse::\n+`--sparse`::\n \tAll commits that are walked are included.\n +\n Note that without `--full-history`, this still simplifies merges: if\n one of the parents is TREESAME, we follow only that one, so the other\n sides of the merge are never walked.\n \n---simplify-merges::\n+`--simplify-merges`::\n \tFirst, build a history graph in the same way that\n \t`--full-history` with parent rewriting does (see above).\n +\n@@ -618,9 +618,9 @@ Note the major differences in `N`, `P`, and `Q` over `--full-history`:\n \n There is another simplification mode available:\n \n---ancestry-path[=<commit>]::\n+`--ancestry-path[=<commit>]`::\n \tLimit the displayed commits to those which are an ancestor of\n-\t<commit>, or which are a descendant of <commit>, or are <commit>\n+\t_<commit>_, or which are a descendant of _<commit>_, or are _<commit>_\n \titself.\n +\n As an example use case, consider the following commit history:\n@@ -636,15 +636,15 @@ As an example use case, consider the following commit history:\n A regular 'D..M' computes the set of commits that are ancestors of `M`,\n but excludes the ones that are ancestors of `D`. This is useful to see\n what happened to the history leading to `M` since `D`, in the sense\n-that ``what does `M` have that did not exist in `D`''. The result in this\n+that \"what does `M` have that did not exist in `D`\". The result in this\n example would be all the commits, except `A` and `B` (and `D` itself,\n of course).\n +\n When we want to find out what commits in `M` are contaminated with the\n bug introduced by `D` and need fixing, however, we might want to view\n-only the subset of 'D..M' that are actually descendants of `D`, i.e.\n+only the subset of `D..M` that are actually descendants of `D`, i.e.\n excluding `C` and `K`. This is exactly what the `--ancestry-path`\n-option does. Applied to the 'D..M' range, it results in:\n+option does. Applied to the `D..M` range, it results in:\n +\n -----------------------------------------------------------------------\n \t\tE-------F\n@@ -655,7 +655,7 @@ option does. Applied to the 'D..M' range, it results in:\n -----------------------------------------------------------------------\n +\n We can also use `--ancestry-path=D` instead of `--ancestry-path` which\n-means the same thing when applied to the 'D..M' range but is just more\n+means the same thing when applied to the `D..M` range but is just more\n explicit.\n +\n If we instead are interested in a given topic within this range, and all\n@@ -770,7 +770,7 @@ into the important branch. This commit may have information about why\n the change `X` came to override the changes from `A` and `B` in its\n commit message.\n \n---show-pulls::\n+`--show-pulls`::\n \tIn addition to the commits shown in the default history, show\n \teach merge commit that is not TREESAME to its first parent but\n \tis TREESAME to a later parent.\n@@ -819,7 +819,7 @@ ifdef::git-rev-list[]\n Bisection Helpers\n ~~~~~~~~~~~~~~~~~\n \n---bisect::\n+`--bisect`::\n \tLimit output to the one commit object which is roughly halfway between\n \tincluded and excluded commits. Note that the bad bisection ref\n \t`refs/bisect/bad` is added to the included commits (if it\n@@ -843,7 +843,7 @@ introduces a regression is thus reduced to a binary search: repeatedly\n generate and test new 'midpoint's until the commit chain is of length\n one.\n \n---bisect-vars::\n+`--bisect-vars`::\n \tThis calculates the same as `--bisect`, except that refs in\n \t`refs/bisect/` are not used, and except that this outputs\n \ttext ready to be eval'ed by the shell. These lines will assign the\n@@ -855,7 +855,7 @@ one.\n \t`bisect_bad`, and the number of commits we are bisecting right now to\n \t`bisect_all`.\n \n---bisect-all::\n+`--bisect-all`::\n \tThis outputs all the commit objects between the included and excluded\n \tcommits, ordered by their distance to the included and excluded\n \tcommits. Refs in `refs/bisect/` are not used. The farthest\n@@ -878,15 +878,15 @@ Commit Ordering\n \n By default, the commits are shown in reverse chronological order.\n \n---date-order::\n+`--date-order`::\n \tShow no parents before all of its children are shown, but\n \totherwise show commits in the commit timestamp order.\n \n---author-date-order::\n+`--author-date-order`::\n \tShow no parents before all of its children are shown, but\n \totherwise show commits in the author timestamp order.\n \n---topo-order::\n+`--topo-order`::\n \tShow no parents before all of its children are shown, and\n \tavoid showing commits on multiple lines of history\n \tintermixed.\n@@ -910,8 +910,8 @@ With `--topo-order`, they would show 8 6 5 3 7 4 2 1 (or 8 7 4 2 6 5\n avoid showing the commits from two parallel development track mixed\n together.\n \n---reverse::\n-\tOutput the commits chosen to be shown (see Commit Limiting\n+`--reverse`::\n+\tOutput the commits chosen to be shown (see 'Commit Limiting'\n \tsection above) in reverse order. Cannot be combined with\n \t`--walk-reflogs`.\n endif::git-shortlog[]\n@@ -923,39 +923,39 @@ Object Traversal\n These options are mostly targeted for packing of Git repositories.\n \n ifdef::git-rev-list[]\n---objects::\n+`--objects`::\n \tPrint the object IDs of any object referenced by the listed\n-\tcommits.  `--objects foo ^bar` thus means ``send me\n+\tcommits.  `--objects foo ^bar` thus means \"send me\n \tall object IDs which I need to download if I have the commit\n-\tobject _bar_ but not _foo_''. See also `--object-names` below.\n+\tobject `bar` but not `foo`\". See also `--object-names` below.\n \n---in-commit-order::\n+`--in-commit-order`::\n \tPrint tree and blob ids in order of the commits. The tree\n \tand blob ids are printed after they are first referenced\n \tby a commit.\n \n---objects-edge::\n+`--objects-edge`::\n \tSimilar to `--objects`, but also print the IDs of excluded\n-\tcommits prefixed with a ``-'' character.  This is used by\n+\tcommits prefixed with a \"`-`\" character.  This is used by\n \tlinkgit:git-pack-objects[1] to build a ``thin'' pack, which records\n \tobjects in deltified form based on objects contained in these\n \texcluded commits to reduce network traffic.\n \n---objects-edge-aggressive::\n+`--objects-edge-aggressive`::\n \tSimilar to `--objects-edge`, but it tries harder to find excluded\n \tcommits at the cost of increased time.  This is used instead of\n \t`--objects-edge` to build ``thin'' packs for shallow repositories.\n \n---indexed-objects::\n+`--indexed-objects`::\n \tPretend as if all trees and blobs used by the index are listed\n \ton the command line.  Note that you probably want to use\n \t`--objects`, too.\n \n---unpacked::\n+`--unpacked`::\n \tOnly useful with `--objects`; print the object IDs that are not\n \tin packs.\n \n---object-names::\n+`--object-names`::\n \tOnly useful with `--objects`; print the names of the object IDs\n \tthat are found. This is the default behavior. Note that the\n \t\"name\" of each object is ambiguous, and mostly intended as a\n@@ -964,52 +964,52 @@ ifdef::git-rev-list[]\n \tto remove newlines; and if an object would appear multiple times\n \twith different names, only one name is shown.\n \n---no-object-names::\n+`--no-object-names`::\n \tOnly useful with `--objects`; does not print the names of the object\n \tIDs that are found. This inverts `--object-names`. This flag allows\n \tthe output to be more easily parsed by commands such as\n \tlinkgit:git-cat-file[1].\n \n---filter=<filter-spec>::\n+`--filter=<filter-spec>`::\n \tOnly useful with one of the `--objects*`; omits objects (usually\n-\tblobs) from the list of printed objects.  The '<filter-spec>'\n+\tblobs) from the list of printed objects.  The _<filter-spec>_\n \tmay be one of the following:\n +\n-The form '--filter=blob:none' omits all blobs.\n+The form `--filter=blob:none` omits all blobs.\n +\n-The form '--filter=blob:limit=<n>[kmg]' omits blobs of size at least n\n-bytes or units.  n may be zero.  The suffixes k, m, and g can be used\n-to name units in KiB, MiB, or GiB.  For example, 'blob:limit=1k'\n+The form `--filter=blob:limit=<n>[kmg]` omits blobs of size at least _<n>_\n+bytes or units.  _<n>_ may be zero.  The suffixes `k`, `m`, and `g` can be used\n+to name units in KiB, MiB, or GiB.  For example, `blob:limit=1k`\n is the same as 'blob:limit=1024'.\n +\n-The form '--filter=object:type=(tag|commit|tree|blob)' omits all objects\n+The form `--filter=object:type=(tag|commit|tree|blob)` omits all objects\n which are not of the requested type.\n +\n-The form '--filter=sparse:oid=<blob-ish>' uses a sparse-checkout\n-specification contained in the blob (or blob-expression) '<blob-ish>'\n+The form `--filter=sparse:oid=<blob-ish>` uses a sparse-checkout\n+specification contained in the blob (or blob-expression) _<blob-ish>_\n to omit blobs that would not be required for a sparse checkout on\n the requested refs.\n +\n-The form '--filter=tree:<depth>' omits all blobs and trees whose depth\n-from the root tree is >= <depth> (minimum depth if an object is located\n-at multiple depths in the commits traversed). <depth>=0 will not include\n+The form `--filter=tree:<depth>` omits all blobs and trees whose depth\n+from the root tree is >= _<depth>_ (minimum depth if an object is located\n+at multiple depths in the commits traversed). _<depth>_=0 will not include\n any trees or blobs unless included explicitly in the command-line (or\n-standard input when --stdin is used). <depth>=1 will include only the\n+standard input when `--stdin` is used). _<depth>_=1 will include only the\n tree and blobs which are referenced directly by a commit reachable from\n-<commit> or an explicitly-given object. <depth>=2 is like <depth>=1\n+_<commit>_ or an explicitly-given object. _<depth>_=2 is like <depth>=1\n while also including trees and blobs one more level removed from an\n explicitly-given commit or tree.\n +\n-Note that the form '--filter=sparse:path=<path>' that wants to read\n+Note that the form `--filter=sparse:path=<path>` that wants to read\n from an arbitrary path on the filesystem has been dropped for security\n reasons.\n +\n-Multiple '--filter=' flags can be specified to combine filters. Only\n+Multiple `--filter=` flags can be specified to combine filters. Only\n objects which are accepted by every filter are included.\n +\n-The form '--filter=combine:<filter1>+<filter2>+...<filterN>' can also be\n+The form `--filter=combine:<filter1>+<filter2>+...<filterN>` can also be\n used to combined several filters, but this is harder than just repeating\n-the '--filter' flag and is usually not necessary. Filters are joined by\n+the `--filter` flag and is usually not necessary. Filters are joined by\n '{plus}' and individual filters are %-encoded (i.e. URL-encoded).\n Besides the '{plus}' and '%' characters, the following characters are\n reserved and also must be encoded: `~!@#$^&*()[]{}\\;\",<>?`+&#39;&#96;+\n@@ -1017,52 +1017,52 @@ as well as all characters with ASCII code &lt;= `0x20`, which includes\n space and newline.\n +\n Other arbitrary characters can also be encoded. For instance,\n-'combine:tree:3+blob:none' and 'combine:tree%3A3+blob%3Anone' are\n+`combine:tree:3+blob:none` and `combine:tree%3A3+blob%3Anone` are\n equivalent.\n \n---no-filter::\n+`--no-filter`::\n \tTurn off any previous `--filter=` argument.\n \n---filter-provided-objects::\n+`--filter-provided-objects`::\n \tFilter the list of explicitly provided objects, which would otherwise\n \talways be printed even if they did not match any of the filters. Only\n \tuseful with `--filter=`.\n \n---filter-print-omitted::\n+`--filter-print-omitted`::\n \tOnly useful with `--filter=`; prints a list of the objects omitted\n \tby the filter.  Object IDs are prefixed with a ``~'' character.\n \n---missing=<missing-action>::\n+`--missing=<missing-action>`::\n \tA debug option to help with future \"partial clone\" development.\n \tThis option specifies how missing objects are handled.\n +\n-The form '--missing=error' requests that rev-list stop with an error if\n+The form `--missing=error` requests that rev-list stop with an error if\n a missing object is encountered.  This is the default action.\n +\n-The form '--missing=allow-any' will allow object traversal to continue\n+The form `--missing=allow-any` will allow object traversal to continue\n if a missing object is encountered.  Missing objects will silently be\n omitted from the results.\n +\n-The form '--missing=allow-promisor' is like 'allow-any', but will only\n+The form `--missing=allow-promisor` is like `allow-any`, but will only\n allow object traversal to continue for EXPECTED promisor missing objects.\n Unexpected missing objects will raise an error.\n +\n-The form '--missing=print' is like 'allow-any', but will also print a\n+The form `--missing=print` is like `allow-any`, but will also print a\n list of the missing objects.  Object IDs are prefixed with a ``?'' character.\n +\n-The form '--missing=print-info' is like 'print', but will also print additional\n+The form `--missing=print-info` is like `print`, but will also print additional\n information about the missing object inferred from its containing object. The\n information is all printed on the same line with the missing object ID in the\n form: `?<oid> [<token>=<value>]...`. The `<token>=<value>` pairs containing\n-additional information are separated from each other by a SP. The value is\n-encoded in a token specific fashion, but SP or LF contained in value are always\n+additional information are separated from each other by a _SP_. The value is\n+encoded in a token specific fashion, but _SP_ or _LF_ contained in value are always\n expected to be represented in such a way that the resulting encoded value does\n not have either of these two problematic bytes. Each `<token>=<value>` may be\n one of the following:\n +\n --\n * The `path=<path>` shows the path of the missing object inferred from a\n-  containing object. A path containing SP or special characters is enclosed in\n+  containing object. A path containing _SP_ or special characters is enclosed in\n   double-quotes in the C style as needed.\n +\n * The `type=<type>` shows the type of the missing object inferred from a\n@@ -1073,7 +1073,7 @@ If some tips passed to the traversal are missing, they will be\n considered as missing too, and the traversal will ignore them. In case\n we cannot get their Object ID though, an error will be raised.\n \n---exclude-promisor-objects::\n+`--exclude-promisor-objects`::\n \t(For internal use only.)  Prefilter object traversal at\n \tpromisor boundary.  This is used with partial clone.  This is\n \tstronger than `--missing=allow-promisor` because it limits the\n@@ -1081,7 +1081,7 @@ we cannot get their Object ID though, an error will be raised.\n \tobjects.\n endif::git-rev-list[]\n \n---no-walk[=(sorted|unsorted)]::\n+`--no-walk[=(sorted|unsorted)]`::\n \tOnly show the given commits, but do not traverse their ancestors.\n \tThis has no effect if a range is specified. If the argument\n \t`unsorted` is given, the commits are shown in the order they were\n@@ -1090,7 +1090,7 @@ endif::git-rev-list[]\n \tby commit time.\n \tCannot be combined with `--graph`.\n \n---do-walk::\n+`--do-walk`::\n \tOverrides a previous `--no-walk`.\n endif::git-shortlog[]\n \n@@ -1111,10 +1111,10 @@ endif::git-rev-list[]\n \n include::pretty-options.adoc[]\n \n---relative-date::\n+`--relative-date`::\n \tSynonym for `--date=relative`.\n \n---date=<format>::\n+`--date=<format>`::\n \tOnly takes effect for dates shown in human-readable format, such\n \tas when using `--pretty`. `log.date` config variable sets a default\n \tvalue for the log command's `--date` option. By default, dates\n@@ -1164,12 +1164,12 @@ omitted.\n 1970).  As with `--raw`, this is always in UTC and therefore `-local`\n has no effect.\n \n-`--date=format:...` feeds the format `...` to your system `strftime`,\n-except for %s, %z, and %Z, which are handled internally.\n+`--date=format:<format>` feeds the _<format>_ to your system `strftime`,\n+except for `%s`, `%z`, and `%Z`, which are handled internally.\n Use `--date=format:%c` to show the date in your system locale's\n-preferred format.  See the `strftime` manual for a complete list of\n+preferred format.  See the `strftime`(3) manual for a complete list of\n format placeholders. When using `-local`, the correct syntax is\n-`--date=format-local:...`.\n+`--date=format-local:<format>`.\n \n `--date=default` is the default format, and is based on ctime(3)\n output.  It shows a single line with three-letter day of the week,\n@@ -1179,33 +1179,33 @@ the local time zone is used, e.g. `Thu Jan 1 00:00:00 1970 +0000`.\n --\n \n ifdef::git-rev-list[]\n---header::\n+`--header`::\n \tPrint the contents of the commit in raw-format; each record is\n \tseparated with a NUL character.\n \n---no-commit-header::\n+`--no-commit-header`::\n \tSuppress the header line containing \"commit\" and the object ID printed before\n \tthe specified format.  This has no effect on the built-in formats; only custom\n \tformats are affected.\n \n---commit-header::\n+`--commit-header`::\n \tOverrides a previous `--no-commit-header`.\n endif::git-rev-list[]\n \n---parents::\n+`--parents`::\n \tPrint also the parents of the commit (in the form \"commit parent...\").\n \tAlso enables parent rewriting, see 'History Simplification' above.\n \n---children::\n+`--children`::\n \tPrint also the children of the commit (in the form \"commit child...\").\n \tAlso enables parent rewriting, see 'History Simplification' above.\n \n ifdef::git-rev-list[]\n---timestamp::\n+`--timestamp`::\n \tPrint the raw commit timestamp.\n endif::git-rev-list[]\n \n---left-right::\n+`--left-right`::\n \tMark which side of a symmetric difference a commit is reachable from.\n \tCommits from the left side are prefixed with `<` and those from\n \tthe right with `>`.  If combined with `--boundary`, those\n@@ -1234,7 +1234,7 @@ you would get an output like this:\n \t-xxxxxxx... 1st on a\n -----------------------------------------------------------------------\n \n---graph::\n+`--graph`::\n \tDraw a text-based graphical representation of the commit history\n \ton the left hand side of the output.  This may cause extra lines\n \tto be printed in between commits, in order for the graph history\n@@ -1246,15 +1246,15 @@ This enables parent rewriting, see 'History Simplification' above.\n This implies the `--topo-order` option by default, but the\n `--date-order` option may also be specified.\n \n---show-linear-break[=<barrier>]::\n-\tWhen --graph is not used, all history branches are flattened\n+`--show-linear-break[=<barrier>]`::\n+\tWhen `--graph` is not used, all history branches are flattened\n \twhich can make it hard to see that the two consecutive commits\n \tdo not belong to a linear branch. This option puts a barrier\n-\tin between them in that case. If `<barrier>` is specified, it\n+\tin between them in that case. If _<barrier>_ is specified, it\n \tis the string that will be shown instead of the default one.\n \n ifdef::git-rev-list[]\n---count::\n+`--count`::\n \tPrint a number stating how many commits would have been\n \tlisted, and suppress all other output.  When used together\n \twith `--left-right`, instead print the counts for left and\n-- \ngitgitgadget\n\n"},{"id":"521467","messageId":"0d461544c9d720e379a867a9713998bf09136885.1751914412.git.gitgitgadget@gmail.com","threadId":"63603","inReplyTo":"pull.1933.v3.git.1751914412.gitgitgadget@gmail.com","subject":"[PATCH v3 7/9] doc: git-log: convert pretty formats to new doc format","fromName":"Jean-Noël Avila via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2025-07-07T18:53:30Z","receivedAt":"2025-07-07T18:53:43Z","isPatch":true,"sender":{"key":"jn.avila@free.fr","avatar":"https://avatars.githubusercontent.com/u/156172?v=4"},"body":"From: =?UTF-8?q?Jean-No=C3=ABl=20Avila?= <jn.avila@free.fr>\n\n- Use _<placeholder>_ instead of <placeholder> in the description\n- Use `backticks` for keywords and more complex option\ndescriptions. The new rendering engine will apply synopsis rules to\nthese spans.\n\nFor all the formats in the form of %(foo), the formatting needs to be\nheavier because we not want the parentheses to be rendered as syntax\nelements,but as keywords, i.e. we need to circumvent the syntax highlighting\nof synopsis.  In this particular case, this requires the heavy escaping of\nthe parts that contain parentheses with ++.\n\nSigned-off-by: Jean-Noël Avila <jn.avila@free.fr>\n---\n Documentation/pretty-formats.adoc | 283 +++++++++++++++---------------\n 1 file changed, 143 insertions(+), 140 deletions(-)\n\ndiff --git a/Documentation/pretty-formats.adoc b/Documentation/pretty-formats.adoc\nindex 07475de8c337..9ed0417fc811 100644\n--- a/Documentation/pretty-formats.adoc\n+++ b/Documentation/pretty-formats.adoc\n@@ -2,11 +2,11 @@ PRETTY FORMATS\n --------------\n \n If the commit is a merge, and if the pretty-format\n-is not 'oneline', 'email' or 'raw', an additional line is\n-inserted before the 'Author:' line.  This line begins with\n+is not `oneline`, `email` or `raw`, an additional line is\n+inserted before the `Author:` line.  This line begins with\n \"Merge: \" and the hashes of ancestral commits are printed,\n separated by spaces.  Note that the listed commits may not\n-necessarily be the list of the *direct* parent commits if you\n+necessarily be the list of the 'direct' parent commits if you\n have limited your view of history: for example, if you are\n only interested in changes related to a certain directory or\n file.\n@@ -14,24 +14,24 @@ file.\n There are several built-in formats, and you can define\n additional formats by setting a pretty.<name>\n config option to either another format name, or a\n-'format:' string, as described below (see\n+`format:` string, as described below (see\n linkgit:git-config[1]). Here are the details of the\n built-in formats:\n \n-* 'oneline'\n+* `oneline`\n \n \t  <hash> <title-line>\n +\n This is designed to be as compact as possible.\n \n-* 'short'\n+* `short`\n \n \t  commit <hash>\n \t  Author: <author>\n \n \t      <title-line>\n \n-* 'medium'\n+* `medium`\n \n \t  commit <hash>\n \t  Author: <author>\n@@ -41,7 +41,7 @@ This is designed to be as compact as possible.\n \n \t      <full-commit-message>\n \n-* 'full'\n+* `full`\n \n \t  commit <hash>\n \t  Author: <author>\n@@ -51,7 +51,7 @@ This is designed to be as compact as possible.\n \n \t      <full-commit-message>\n \n-* 'fuller'\n+* `fuller`\n \n \t  commit <hash>\n \t  Author:     <author>\n@@ -63,18 +63,18 @@ This is designed to be as compact as possible.\n \n \t       <full-commit-message>\n \n-* 'reference'\n+* `reference`\n \n \t  <abbrev-hash> (<title-line>, <short-author-date>)\n +\n This format is used to refer to another commit in a commit message and\n-is the same as `--pretty='format:%C(auto)%h (%s, %ad)'`.  By default,\n+is the same as ++--pretty=\\'format:%C(auto)%h (%s, %ad)'++.  By default,\n the date is formatted with `--date=short` unless another `--date` option\n is explicitly specified.  As with any `format:` with format\n placeholders, its output is not affected by other options like\n `--decorate` and `--walk-reflogs`.\n \n-* 'email'\n+* `email`\n \n \t  From <hash> <date>\n \t  From: <author>\n@@ -83,30 +83,30 @@ placeholders, its output is not affected by other options like\n \n \t  <full-commit-message>\n \n-* 'mboxrd'\n+* `mboxrd`\n +\n-Like 'email', but lines in the commit message starting with \"From \"\n+Like `email`, but lines in the commit message starting with \"From \"\n (preceded by zero or more \">\") are quoted with \">\" so they aren't\n confused as starting a new commit.\n \n-* 'raw'\n+* `raw`\n +\n-The 'raw' format shows the entire commit exactly as\n+The `raw` format shows the entire commit exactly as\n stored in the commit object.  Notably, the hashes are\n-displayed in full, regardless of whether --abbrev or\n---no-abbrev are used, and 'parents' information show the\n+displayed in full, regardless of whether `--abbrev` or\n+`--no-abbrev` are used, and 'parents' information show the\n true parent commits, without taking grafts or history\n simplification into account. Note that this format affects the way\n commits are displayed, but not the way the diff is shown e.g. with\n `git log --raw`. To get full object names in a raw diff format,\n use `--no-abbrev`.\n \n-* 'format:<format-string>'\n+* `format:<format-string>`\n +\n-The 'format:<format-string>' format allows you to specify which information\n+The `format:<format-string>` format allows you to specify which information\n you want to show. It works a little bit like printf format,\n-with the notable exception that you get a newline with '%n'\n-instead of '\\n'.\n+with the notable exception that you get a newline with `%n`\n+instead of `\\n`.\n +\n E.g, 'format:\"The author of %h was %an, %ar%nThe title was >>%s<<%n\"'\n would show something like this:\n@@ -120,158 +120,161 @@ The title was >>t4119: test autocomputing -p<n> for traditional diff input.<<\n The placeholders are:\n \n - Placeholders that expand to a single literal character:\n-'%n':: newline\n-'%%':: a raw '%'\n-'%x00':: '%x' followed by two hexadecimal digits is replaced with a\n+++%n++:: newline\n+++%%++:: a raw ++%++\n+++%x00++:: ++%x++ followed by two hexadecimal digits is replaced with a\n \t byte with the hexadecimal digits' value (we will call this\n \t \"literal formatting code\" in the rest of this document).\n \n - Placeholders that affect formatting of later placeholders:\n-'%Cred':: switch color to red\n-'%Cgreen':: switch color to green\n-'%Cblue':: switch color to blue\n-'%Creset':: reset color\n-'%C(...)':: color specification, as described under Values in the\n+++%Cred++:: switch color to red\n+++%Cgreen++:: switch color to green\n+++%Cblue++:: switch color to blue\n+++%Creset++:: reset color\n+++%C(++_<spec>_++)++:: color specification, as described under Values in the\n \t    \"CONFIGURATION FILE\" section of linkgit:git-config[1].  By\n \t    default, colors are shown only when enabled for log output\n \t    (by `color.diff`, `color.ui`, or `--color`, and respecting\n \t    the `auto` settings of the former if we are going to a\n-\t    terminal). `%C(auto,...)` is accepted as a historical\n-\t    synonym for the default (e.g., `%C(auto,red)`). Specifying\n-\t    `%C(always,...)` will show the colors even when color is\n+\t    terminal). ++%C(auto,++_<spec>_++)++ is accepted as a historical\n+\t    synonym for the default (e.g., ++%C(auto,red)++). Specifying\n+\t    ++%C(always,++_<spec>_++)++ will show the colors even when color is\n \t    not otherwise enabled (though consider just using\n-\t    `--color=always` to enable color for the whole output,\n+\t    `--color=always` to enable color for the  whole output,\n \t    including this format and anything else git might color).\n-\t    `auto` alone (i.e. `%C(auto)`) will turn on auto coloring\n+\t    `auto` alone (i.e. ++%C(auto)++) will turn on auto coloring\n \t    on the next placeholders until the color is switched\n \t    again.\n-'%m':: left (`<`), right (`>`) or boundary (`-`) mark\n-'%w([<w>[,<i1>[,<i2>]]])':: switch line wrapping, like the -w option of\n+++%m++:: left (`<`), right (`>`) or boundary (`-`) mark\n+++%w(++`[<w>[,<i1>[,<i2>]]]`++)++:: switch line wrapping, like the `-w` option of\n \t\t\t    linkgit:git-shortlog[1].\n-'%<( <N> [,trunc|ltrunc|mtrunc])':: make the next placeholder take at\n+++%<(++`<n>[,(trunc|ltrunc|mtrunc)]`++)++:: make the next placeholder take at\n \t\t\t\t  least N column widths, padding spaces on\n \t\t\t\t  the right if necessary.  Optionally\n-\t\t\t\t  truncate (with ellipsis '..') at the left (ltrunc) `..ft`,\n+\t\t\t\t  truncate (with ellipsis `..`) at the left (ltrunc) `..ft`,\n \t\t\t\t  the middle (mtrunc) `mi..le`, or the end\n \t\t\t\t  (trunc) `rig..`, if the output is longer than\n-\t\t\t\t  N columns.\n+\t\t\t\t  _<n>_ columns.\n \t\t\t\t  Note 1: that truncating\n-\t\t\t\t  only works correctly with N >= 2.\n-\t\t\t\t  Note 2: spaces around the N and M (see below)\n+\t\t\t\t  only works correctly with _<n>_ >= 2.\n+\t\t\t\t  Note 2: spaces around the _<n>_ and _<m>_ (see below)\n \t\t\t\t  values are optional.\n \t\t\t\t  Note 3: Emojis and other wide characters\n \t\t\t\t  will take two display columns, which may\n \t\t\t\t  over-run column boundaries.\n \t\t\t\t  Note 4: decomposed character combining marks\n \t\t\t\t  may be misplaced at padding boundaries.\n-'%<|( <M> )':: make the next placeholder take at least until Mth\n+++%<|(++_<m>_ ++)++:: make the next placeholder take at least until _<m>_ th\n \t     display column, padding spaces on the right if necessary.\n-\t     Use negative M values for column positions measured\n+\t     Use negative _<m>_ values for column positions measured\n \t     from the right hand edge of the terminal window.\n-'%>( <N> )', '%>|( <M> )':: similar to '%<( <N> )', '%<|( <M> )' respectively,\n+++%>(++_<n>_++)++::\n+++%>|(++_<m>_++)++:: similar to ++%<(++_<n>_++)++, ++%<|(++_<m>_++)++ respectively,\n \t\t\tbut padding spaces on the left\n-'%>>( <N> )', '%>>|( <M> )':: similar to '%>( <N> )', '%>|( <M> )'\n+++%>>(++_<n>_++)++::\n+++%>>|(++_<m>_++)++:: similar to ++%>(++_<n>_++)++, ++%>|(++_<m>_++)++\n \t\t\t  respectively, except that if the next\n \t\t\t  placeholder takes more spaces than given and\n \t\t\t  there are spaces on its left, use those\n \t\t\t  spaces\n-'%><( <N> )', '%><|( <M> )':: similar to '%<( <N> )', '%<|( <M> )'\n+++%><(++_<n>_++)++::\n+++%><|(++_<m>_++)++:: similar to ++%<(++_<n>_++)++, ++%<|(++_<m>_++)++\n \t\t\t  respectively, but padding both sides\n \t\t\t  (i.e. the text is centered)\n \n - Placeholders that expand to information extracted from the commit:\n-'%H':: commit hash\n-'%h':: abbreviated commit hash\n-'%T':: tree hash\n-'%t':: abbreviated tree hash\n-'%P':: parent hashes\n-'%p':: abbreviated parent hashes\n-'%an':: author name\n-'%aN':: author name (respecting .mailmap, see linkgit:git-shortlog[1]\n++%H+:: commit hash\n++%h+:: abbreviated commit hash\n++%T+:: tree hash\n++%t+:: abbreviated tree hash\n++%P+:: parent hashes\n++%p+:: abbreviated parent hashes\n++%an+:: author name\n++%aN+:: author name (respecting .mailmap, see linkgit:git-shortlog[1]\n \tor linkgit:git-blame[1])\n-'%ae':: author email\n-'%aE':: author email (respecting .mailmap, see linkgit:git-shortlog[1]\n++%ae+:: author email\n++%aE+:: author email (respecting .mailmap, see linkgit:git-shortlog[1]\n \tor linkgit:git-blame[1])\n-'%al':: author email local-part (the part before the '@' sign)\n-'%aL':: author local-part (see '%al') respecting .mailmap, see\n++%al+:: author email local-part (the part before the `@` sign)\n++%aL+:: author local-part (see +%al+) respecting .mailmap, see\n \tlinkgit:git-shortlog[1] or linkgit:git-blame[1])\n-'%ad':: author date (format respects --date= option)\n-'%aD':: author date, RFC2822 style\n-'%ar':: author date, relative\n-'%at':: author date, UNIX timestamp\n-'%ai':: author date, ISO 8601-like format\n-'%aI':: author date, strict ISO 8601 format\n-'%as':: author date, short format (`YYYY-MM-DD`)\n-'%ah':: author date, human style (like the `--date=human` option of\n++%ad+:: author date (format respects --date= option)\n++%aD+:: author date, RFC2822 style\n++%ar+:: author date, relative\n++%at+:: author date, UNIX timestamp\n++%ai+:: author date, ISO 8601-like format\n++%aI+:: author date, strict ISO 8601 format\n++%as+:: author date, short format (`YYYY-MM-DD`)\n++%ah+:: author date, human style (like the `--date=human` option of\n \tlinkgit:git-rev-list[1])\n-'%cn':: committer name\n-'%cN':: committer name (respecting .mailmap, see\n++%cn+:: committer name\n++%cN+:: committer name (respecting .mailmap, see\n \tlinkgit:git-shortlog[1] or linkgit:git-blame[1])\n-'%ce':: committer email\n-'%cE':: committer email (respecting .mailmap, see\n++%ce+:: committer email\n++%cE+:: committer email (respecting .mailmap, see\n \tlinkgit:git-shortlog[1] or linkgit:git-blame[1])\n-'%cl':: committer email local-part (the part before the '@' sign)\n-'%cL':: committer local-part (see '%cl') respecting .mailmap, see\n++%cl+:: committer email local-part (the part before the `@` sign)\n++%cL+:: committer local-part (see +%cl+) respecting .mailmap, see\n \tlinkgit:git-shortlog[1] or linkgit:git-blame[1])\n-'%cd':: committer date (format respects --date= option)\n-'%cD':: committer date, RFC2822 style\n-'%cr':: committer date, relative\n-'%ct':: committer date, UNIX timestamp\n-'%ci':: committer date, ISO 8601-like format\n-'%cI':: committer date, strict ISO 8601 format\n-'%cs':: committer date, short format (`YYYY-MM-DD`)\n-'%ch':: committer date, human style (like the `--date=human` option of\n++%cd+:: committer date (format respects --date= option)\n++%cD+:: committer date, RFC2822 style\n++%cr+:: committer date, relative\n++%ct+:: committer date, UNIX timestamp\n++%ci+:: committer date, ISO 8601-like format\n++%cI+:: committer date, strict ISO 8601 format\n++%cs+:: committer date, short format (`YYYY-MM-DD`)\n++%ch+:: committer date, human style (like the `--date=human` option of\n \tlinkgit:git-rev-list[1])\n-'%d':: ref names, like the --decorate option of linkgit:git-log[1]\n-'%D':: ref names without the \" (\", \")\" wrapping.\n-'%(decorate[:<options>])'::\n++%d+:: ref names, like the --decorate option of linkgit:git-log[1]\n++%D+:: ref names without the \" (\", \")\" wrapping.\n+++%(decorate++`[:<option>,...]`++)++::\n ref names with custom decorations. The `decorate` string may be followed by a\n colon and zero or more comma-separated options. Option values may contain\n literal formatting codes. These must be used for commas (`%x2C`) and closing\n parentheses (`%x29`), due to their role in the option syntax.\n +\n-** 'prefix=<value>': Shown before the list of ref names.  Defaults to \"{nbsp}`(`\".\n-** 'suffix=<value>': Shown after the list of ref names.  Defaults to \"`)`\".\n-** 'separator=<value>': Shown between ref names.  Defaults to \"`,`{nbsp}\".\n-** 'pointer=<value>': Shown between HEAD and the branch it points to, if any.\n-\t\t      Defaults to \"{nbsp}`->`{nbsp}\".\n-** 'tag=<value>': Shown before tag names. Defaults to \"`tag:`{nbsp}\".\n+** `prefix=<value>`: Shown before the list of ref names.  Defaults to \"{nbsp}+(+\".\n+** `suffix=<value>`: Shown after the list of ref names.  Defaults to \"+)+\".\n+** `separator=<value>`: Shown between ref names.  Defaults to \"+,+{nbsp}\".\n+** `pointer=<value>`: Shown between HEAD and the branch it points to, if any.\n+\t\t      Defaults to \"{nbsp}+->+{nbsp}\".\n+** `tag=<value>`: Shown before tag names. Defaults to \"`tag:`{nbsp}\".\n \n +\n For example, to produce decorations with no wrapping\n or tag annotations, and spaces as separators:\n +\n-`%(decorate:prefix=,suffix=,tag=,separator= )`\n+++%(decorate:prefix=,suffix=,tag=,separator= )++\n \n-'%(describe[:<options>])'::\n+++%(describe++`[:<option>,...]`++)++::\n human-readable name, like linkgit:git-describe[1]; empty string for\n undescribable commits.  The `describe` string may be followed by a colon and\n zero or more comma-separated options.  Descriptions can be inconsistent when\n tags are added or removed at the same time.\n +\n-** 'tags[=<bool-value>]': Instead of only considering annotated tags,\n+** `tags[=<bool-value>]`: Instead of only considering annotated tags,\n    consider lightweight tags as well.\n-** 'abbrev=<number>': Instead of using the default number of hexadecimal digits\n+** `abbrev=<number>`: Instead of using the default number of hexadecimal digits\n    (which will vary according to the number of objects in the repository with a\n    default of 7) of the abbreviated object name, use <number> digits, or as many\n    digits as needed to form a unique object name.\n-** 'match=<pattern>': Only consider tags matching the given\n-   `glob(7)` pattern, excluding the \"refs/tags/\" prefix.\n-** 'exclude=<pattern>': Do not consider tags matching the given\n-   `glob(7)` pattern, excluding the \"refs/tags/\" prefix.\n+** `match=<pattern>`: Only consider tags matching the given\n+   `glob(7)` _<pattern>_, excluding the `refs/tags/` prefix.\n+** `exclude=<pattern>`: Do not consider tags matching the given\n+   `glob(7)` _<pattern>_, excluding the `refs/tags/` prefix.\n \n-'%S':: ref name given on the command line by which the commit was reached\n++%S+:: ref name given on the command line by which the commit was reached\n        (like `git log --source`), only works with `git log`\n-'%e':: encoding\n-'%s':: subject\n-'%f':: sanitized subject line, suitable for a filename\n-'%b':: body\n-'%B':: raw body (unwrapped subject and body)\n++%e+:: encoding\n++%s+:: subject\n++%f+:: sanitized subject line, suitable for a filename\n++%b+:: body\n++%B+:: raw body (unwrapped subject and body)\n ifndef::git-rev-list[]\n-'%N':: commit notes\n++%N+:: commit notes\n endif::git-rev-list[]\n-'%GG':: raw verification message from GPG for a signed commit\n-'%G?':: show \"G\" for a good (valid) signature,\n++%GG+:: raw verification message from GPG for a signed commit\n++%G?+:: show \"G\" for a good (valid) signature,\n \t\"B\" for a bad signature,\n \t\"U\" for a good signature with unknown validity,\n \t\"X\" for a good signature that has expired,\n@@ -279,86 +282,86 @@ endif::git-rev-list[]\n \t\"R\" for a good signature made by a revoked key,\n \t\"E\" if the signature cannot be checked (e.g. missing key)\n \tand \"N\" for no signature\n-'%GS':: show the name of the signer for a signed commit\n-'%GK':: show the key used to sign a signed commit\n-'%GF':: show the fingerprint of the key used to sign a signed commit\n-'%GP':: show the fingerprint of the primary key whose subkey was used\n++%GS+:: show the name of the signer for a signed commit\n++%GK+:: show the key used to sign a signed commit\n++%GF+:: show the fingerprint of the key used to sign a signed commit\n++%GP+:: show the fingerprint of the primary key whose subkey was used\n \tto sign a signed commit\n-'%GT':: show the trust level for the key used to sign a signed commit\n-'%gD':: reflog selector, e.g., `refs/stash@{1}` or `refs/stash@{2\n++%GT+:: show the trust level for the key used to sign a signed commit\n++%gD+:: reflog selector, e.g., `refs/stash@{1}` or `refs/stash@{2\n \tminutes ago}`; the format follows the rules described for the\n \t`-g` option. The portion before the `@` is the refname as\n \tgiven on the command line (so `git log -g refs/heads/master`\n \twould yield `refs/heads/master@{0}`).\n-'%gd':: shortened reflog selector; same as `%gD`, but the refname\n++%gd+:: shortened reflog selector; same as `%gD`, but the refname\n \tportion is shortened for human readability (so\n \t`refs/heads/master` becomes just `master`).\n-'%gn':: reflog identity name\n-'%gN':: reflog identity name (respecting .mailmap, see\n++%gn+:: reflog identity name\n++%gN+:: reflog identity name (respecting .mailmap, see\n \tlinkgit:git-shortlog[1] or linkgit:git-blame[1])\n-'%ge':: reflog identity email\n-'%gE':: reflog identity email (respecting .mailmap, see\n++%ge+:: reflog identity email\n++%gE+:: reflog identity email (respecting .mailmap, see\n \tlinkgit:git-shortlog[1] or linkgit:git-blame[1])\n-'%gs':: reflog subject\n-'%(trailers[:<options>])'::\n++%gs+:: reflog subject\n+++%(trailers++`[:<option>,...]`++)++::\n display the trailers of the body as interpreted by\n linkgit:git-interpret-trailers[1]. The `trailers` string may be followed by\n a colon and zero or more comma-separated options. If any option is provided\n multiple times, the last occurrence wins.\n +\n-** 'key=<key>': only show trailers with specified <key>. Matching is done\n+** `key=<key>`: only show trailers with specified <key>. Matching is done\n    case-insensitively and trailing colon is optional. If option is\n    given multiple times trailer lines matching any of the keys are\n    shown. This option automatically enables the `only` option so that\n    non-trailer lines in the trailer block are hidden. If that is not\n    desired it can be disabled with `only=false`.  E.g.,\n-   `%(trailers:key=Reviewed-by)` shows trailer lines with key\n+   +%(trailers:key=Reviewed-by)+ shows trailer lines with key\n    `Reviewed-by`.\n-** 'only[=<bool>]': select whether non-trailer lines from the trailer\n+** `only[=<bool>]`: select whether non-trailer lines from the trailer\n    block should be included.\n-** 'separator=<sep>': specify the separator inserted between trailer\n+** `separator=<sep>`: specify the separator inserted between trailer\n    lines. Defaults to a line feed character. The string <sep> may contain\n    the literal formatting codes described above. To use comma as\n    separator one must use `%x2C` as it would otherwise be parsed as\n-   next option. E.g., `%(trailers:key=Ticket,separator=%x2C )`\n+   next option. E.g., +%(trailers:key=Ticket,separator=%x2C )+\n    shows all trailer lines whose key is \"Ticket\" separated by a comma\n    and a space.\n-** 'unfold[=<bool>]': make it behave as if interpret-trailer's `--unfold`\n+** `unfold[=<bool>]`: make it behave as if interpret-trailer's `--unfold`\n    option was given. E.g.,\n-   `%(trailers:only,unfold=true)` unfolds and shows all trailer lines.\n-** 'keyonly[=<bool>]': only show the key part of the trailer.\n-** 'valueonly[=<bool>]': only show the value part of the trailer.\n-** 'key_value_separator=<sep>': specify the separator inserted between\n+   +%(trailers:only,unfold=true)+ unfolds and shows all trailer lines.\n+** `keyonly[=<bool>]`: only show the key part of the trailer.\n+** `valueonly[=<bool>]`: only show the value part of the trailer.\n+** `key_value_separator=<sep>`: specify the separator inserted between\n    the key and value of each trailer. Defaults to \": \". Otherwise it\n-   shares the same semantics as 'separator=<sep>' above.\n+   shares the same semantics as `separator=<sep>` above.\n \n NOTE: Some placeholders may depend on other options given to the\n-revision traversal engine. For example, the `%g*` reflog options will\n+revision traversal engine. For example, the +%g*+ reflog options will\n insert an empty string unless we are traversing reflog entries (e.g., by\n-`git log -g`). The `%d` and `%D` placeholders will use the \"short\"\n+`git log -g`). The +%d+ and +%D+ placeholders will use the \"short\"\n decoration format if `--decorate` was not already provided on the command\n line.\n \n The boolean options accept an optional value `[=<bool-value>]`. The\n-values taken by `--type=bool` git-config[1], like `yes` and `off`,\n+values taken by `--type=bool` linkgit:git-config[1], like `yes` and `off`,\n are all accepted.  Giving a boolean option without `=<value>` is\n equivalent to giving it with `=true`.\n \n-If you add a `+` (plus sign) after '%' of a placeholder, a line-feed\n+If you add a `+` (plus sign) after +%+ of a placeholder, a line-feed\n is inserted immediately before the expansion if and only if the\n placeholder expands to a non-empty string.\n \n-If you add a `-` (minus sign) after '%' of a placeholder, all consecutive\n+If you add a `-` (minus sign) after +%+ of a placeholder, all consecutive\n line-feeds immediately preceding the expansion are deleted if and only if the\n placeholder expands to an empty string.\n \n-If you add a ` ` (space) after '%' of a placeholder, a space\n+If you add a `' '` (space) after +%+ of a placeholder, a space\n is inserted immediately before the expansion if and only if the\n placeholder expands to a non-empty string.\n \n-* 'tformat:'\n+* `tformat:`\n +\n-The 'tformat:' format works exactly like 'format:', except that it\n+The `tformat:` format works exactly like `format:`, except that it\n provides \"terminator\" semantics instead of \"separator\" semantics. In\n other words, each commit has the message terminator character (usually a\n newline) appended, rather than a separator placed between entries.\n@@ -378,7 +381,7 @@ $ git log -2 --pretty=tformat:%h 4da45bef \\\n 7134973\n ---------------------\n +\n-In addition, any unrecognized string that has a `%` in it is interpreted\n+In addition, any unrecognized string that has a +%+ in it is interpreted\n as if it has `tformat:` in front of it.  For example, these two are\n equivalent:\n +\n-- \ngitgitgadget\n\n"},{"id":"521466","messageId":"207fc49a20111109ef18fcf2ae6d3060312a8aa9.1751914412.git.gitgitgadget@gmail.com","threadId":"63603","inReplyTo":"pull.1933.v3.git.1751914412.gitgitgadget@gmail.com","subject":"[PATCH v3 8/9] doc: git-log: convert diff options to new doc format","fromName":"Jean-Noël Avila via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2025-07-07T18:53:31Z","receivedAt":"2025-07-07T18:53:44Z","isPatch":true,"sender":{"key":"jn.avila@free.fr","avatar":"https://avatars.githubusercontent.com/u/156172?v=4"},"body":"From: =?UTF-8?q?Jean-No=C3=ABl=20Avila?= <jn.avila@free.fr>\n\n- Use `backticks` for keywords and more complex option\ndescriptions. The new rendering engine will apply synopsis rules to\nthese spans.\n- In description lists, put each option on its own line, to make them more\nsearchable and enable automatic translation of the options.\n\nSigned-off-by: Jean-Noël Avila <jn.avila@free.fr>\n---\n Documentation/diff-options.adoc | 40 +++++++++++++++++++--------------\n 1 file changed, 23 insertions(+), 17 deletions(-)\n\ndiff --git a/Documentation/diff-options.adoc b/Documentation/diff-options.adoc\nindex 640eb6e7db58..f3a35d81411f 100644\n--- a/Documentation/diff-options.adoc\n+++ b/Documentation/diff-options.adoc\n@@ -37,32 +37,32 @@ endif::git-diff[]\n endif::git-format-patch[]\n \n ifdef::git-log[]\n--m::\n+`-m`::\n \tShow diffs for merge commits in the default format. This is\n \tsimilar to `--diff-merges=on`, except `-m` will\n \tproduce no output unless `-p` is given as well.\n \n--c::\n+`-c`::\n \tProduce combined diff output for merge commits.\n \tShortcut for `--diff-merges=combined -p`.\n \n---cc::\n+`--cc`::\n \tProduce dense combined diff output for merge commits.\n \tShortcut for `--diff-merges=dense-combined -p`.\n \n---dd::\n+`--dd`::\n \tProduce diff with respect to first parent for both merge and\n \tregular commits.\n \tShortcut for `--diff-merges=first-parent -p`.\n \n---remerge-diff::\n+`--remerge-diff`::\n \tProduce remerge-diff output for merge commits.\n \tShortcut for `--diff-merges=remerge -p`.\n \n---no-diff-merges::\n+`--no-diff-merges`::\n \tSynonym for `--diff-merges=off`.\n \n---diff-merges=<format>::\n+`--diff-merges=<format>`::\n \tSpecify diff format to be used for merge commits. Default is\n \t{diff-merges-default} unless `--first-parent` is in use, in\n \twhich case `first-parent` is the default.\n@@ -70,48 +70,54 @@ ifdef::git-log[]\n The following formats are supported:\n +\n --\n-off, none::\n+`off`::\n+`none`::\n \tDisable output of diffs for merge commits. Useful to override\n \timplied value.\n \n-on, m::\n+`on`::\n+`m`::\n \tMake diff output for merge commits to be shown in the default\n \tformat. The default format can be changed using\n \t`log.diffMerges` configuration variable, whose default value\n \tis `separate`.\n \n-first-parent, 1::\n+`first-parent`::\n+`1`::\n \tShow full diff with respect to first parent. This is the same\n \tformat as `--patch` produces for non-merge commits.\n \n-separate::\n+`separate`::\n \tShow full diff with respect to each of parents.\n \tSeparate log entry and diff is generated for each parent.\n \n-combined, c::\n+`combined`::\n+`c`::\n \tShow differences from each of the parents to the merge\n \tresult simultaneously instead of showing pairwise diff between\n \ta parent and the result one at a time. Furthermore, it lists\n \tonly files which were modified from all parents.\n \n-dense-combined, cc::\n+`dense-combined`::\n+`cc`::\n \tFurther compress output produced by `--diff-merges=combined`\n \tby omitting uninteresting hunks whose contents in the parents\n \thave only two variants and the merge result picks one of them\n \twithout modification.\n \n-remerge, r::\n-\tRemerge two-parent merge commits to create a temporary tree\n+`remerge`::\n+`r`:: Remerge two-parent merge commits to create a temporary tree\n \tobject--potentially containing files with conflict markers\n \tand such.  A diff is then shown between that temporary tree\n \tand the actual merge commit.\n+--\n +\n The output emitted when this option is used is subject to change, and\n so is its interaction with other options (unless explicitly\n documented).\n---\n \n---combined-all-paths::\n+\n+`--combined-all-paths`::\n \tCause combined diffs (used for merge commits) to\n \tlist the name of the file from all parents.  It thus only has\n \teffect when `--diff-merges=[dense-]combined` is in use, and\n-- \ngitgitgadget\n\n"},{"id":"521469","messageId":"b51d362196458d18394579207bbdf8a01ea56ac3.1751914412.git.gitgitgadget@gmail.com","threadId":"63603","inReplyTo":"pull.1933.v3.git.1751914412.gitgitgadget@gmail.com","subject":"[PATCH v3 9/9] doc: git-log: convert log config to new doc format","fromName":"Jean-Noël Avila via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2025-07-07T18:53:32Z","receivedAt":"2025-07-07T18:53:45Z","isPatch":true,"sender":{"key":"jn.avila@free.fr","avatar":"https://avatars.githubusercontent.com/u/156172?v=4"},"body":"From: =?UTF-8?q?Jean-No=C3=ABl=20Avila?= <jn.avila@free.fr>\n\n- Use `backticks` for keywords and more complex option\ndescriptions. The new rendering engine will apply synopsis rules to\nthese spans.\n- Explain possible options in description list instead of in a paragraph.\n\nSigned-off-by: Jean-Noël Avila <jn.avila@free.fr>\n---\n Documentation/config/log.adoc | 47 +++++++++++++++++++----------------\n 1 file changed, 26 insertions(+), 21 deletions(-)\n\ndiff --git a/Documentation/config/log.adoc b/Documentation/config/log.adoc\nindex a9b160e7dee4..16e00e8d296a 100644\n--- a/Documentation/config/log.adoc\n+++ b/Documentation/config/log.adoc\n@@ -1,5 +1,5 @@\n-log.abbrevCommit::\n-\tIf true, makes\n+`log.abbrevCommit`::\n+\tIf `true`, make\n ifndef::with-breaking-changes[]\n \tlinkgit:git-log[1], linkgit:git-show[1], and\n \tlinkgit:git-whatchanged[1]\n@@ -10,62 +10,67 @@ endif::with-breaking-changes[]\n \tassume `--abbrev-commit`. You may\n \toverride this option with `--no-abbrev-commit`.\n \n-log.date::\n-\tSet the default date-time mode for the 'log' command.\n-\tSetting a value for log.date is similar to using 'git log''s\n+`log.date`::\n+\tSet the default date-time mode for the `log` command.\n+\tSetting a value for log.date is similar to using `git log`'s\n \t`--date` option.  See linkgit:git-log[1] for details.\n +\n If the format is set to \"auto:foo\" and the pager is in use, format\n \"foo\" will be used for the date format. Otherwise, \"default\" will\n be used.\n \n-log.decorate::\n+`log.decorate`::\n \tPrint out the ref names of any commits that are shown by the log\n-\tcommand. If 'short' is specified, the ref name prefixes 'refs/heads/',\n-\t'refs/tags/' and 'refs/remotes/' will not be printed. If 'full' is\n-\tspecified, the full ref name (including prefix) will be printed.\n-\tIf 'auto' is specified, then if the output is going to a terminal,\n-\tthe ref names are shown as if 'short' were given, otherwise no ref\n-\tnames are shown. This is the same as the `--decorate` option\n-\tof the `git log`.\n+\tcommand. Possible values are:\n++\n+----\n+`short`;; the ref name prefixes `refs/heads/`, `refs/tags/` and\n+\t`refs/remotes/` are not printed.\n+`full`;; the full ref name (including prefix) are printed.\n+`auto`;; if the output is going to a terminal,\n+\tthe ref names are shown as if `short` were given, otherwise no ref\n+\tnames are shown.\n+----\n++\n+This is the same as the `--decorate` option of the `git log`.\n \n-log.initialDecorationSet::\n+`log.initialDecorationSet`::\n \tBy default, `git log` only shows decorations for certain known ref\n \tnamespaces. If 'all' is specified, then show all refs as\n \tdecorations.\n \n-log.excludeDecoration::\n+`log.excludeDecoration`::\n \tExclude the specified patterns from the log decorations. This is\n \tsimilar to the `--decorate-refs-exclude` command-line option, but\n \tthe config option can be overridden by the `--decorate-refs`\n \toption.\n \n-log.diffMerges::\n+`log.diffMerges`::\n \tSet diff format to be used when `--diff-merges=on` is\n \tspecified, see `--diff-merges` in linkgit:git-log[1] for\n \tdetails. Defaults to `separate`.\n \n-log.follow::\n+`log.follow`::\n \tIf `true`, `git log` will act as if the `--follow` option was used when\n \ta single <path> is given.  This has the same limitations as `--follow`,\n \ti.e. it cannot be used to follow multiple files and does not work well\n \ton non-linear history.\n \n-log.graphColors::\n+`log.graphColors`::\n \tA list of colors, separated by commas, that can be used to draw\n \thistory lines in `git log --graph`.\n \n-log.showRoot::\n+`log.showRoot`::\n \tIf true, the initial commit will be shown as a big creation event.\n \tThis is equivalent to a diff against an empty tree.\n \tTools like linkgit:git-log[1] or linkgit:git-whatchanged[1], which\n \tnormally hide the root commit will now show it. True by default.\n \n-log.showSignature::\n+`log.showSignature`::\n \tIf true, makes linkgit:git-log[1], linkgit:git-show[1], and\n \tlinkgit:git-whatchanged[1] assume `--show-signature`.\n \n-log.mailmap::\n+`log.mailmap`::\n \tIf true, makes linkgit:git-log[1], linkgit:git-show[1], and\n \tlinkgit:git-whatchanged[1] assume `--use-mailmap`, otherwise\n \tassume `--no-use-mailmap`. True by default.\n-- \ngitgitgadget\n"},{"id":"521474","messageId":"xmqqzfdf3efc.fsf@gitster.g","threadId":"63603","inReplyTo":"pull.1933.v3.git.1751914412.gitgitgadget@gmail.com","subject":"Re: [PATCH v3 0/9] doc: convert git log man page to new synopsis format","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2025-07-07T20:59:35Z","receivedAt":"2025-07-07T20:59:37Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"\"Jean-Noël Avila via GitGitGadget\" <gitgitgadget@gmail.com> writes:\n\n> This series converts the man page of git log to the synopsis format style.\n> Git log is the second largest manpage after git config, which makes the\n> changes quite large.\n>\n> A special note about the log format description which required escaping the\n> synopsis processing of parentheses.\n>\n> Changes since V1:\n>\n>  * rework the grammar style when refering to plural placeholders . The text\n>    is more descriptive and does not rely on puns. Puns may be difficult to\n>    understand and to translate.\n>  * change commit message to reflect the conversion of inline description of\n>    several option to a list.\n\nChanges since v2 is a minor but necessary mark-up fix, as we do not\nwant to leave `enclosing` mark-up elements unclosed.\n\nWill queue.  Shall we mark the topic for 'next' now?\n\nThanks.\n"},{"id":"521476","messageId":"2788919.mvXUDI8C0e@cayenne","threadId":"63603","inReplyTo":"xmqqzfdf3efc.fsf@gitster.g","subject":"Re: [PATCH v3 0/9] doc: convert git log man page to new synopsis format","fromName":"Jean-Noël AVILA","fromEmail":"jn.avila@free.fr","sentAt":"2025-07-07T21:01:58Z","receivedAt":"2025-07-07T21:09:24Z","isPatch":true,"sender":{"key":"jn.avila@free.fr","avatar":"https://avatars.githubusercontent.com/u/156172?v=4"},"body":"On Monday, 7 July 2025 22:59:35 CEST Junio C Hamano wrote:\n> \"Jean-Noël Avila via GitGitGadget\" <gitgitgadget@gmail.com> writes:\n> > This series converts the man page of git log to the synopsis format style.\n> > Git log is the second largest manpage after git config, which makes the\n> > changes quite large.\n> > \n> > A special note about the log format description which required escaping \nthe\n> > synopsis processing of parentheses.\n> > \n> > Changes since V1:\n> >  * rework the grammar style when refering to plural placeholders . The \ntext\n> >  \n> >    is more descriptive and does not rely on puns. Puns may be difficult to\n> >    understand and to translate.\n> >  \n> >  * change commit message to reflect the conversion of inline description of\n> >  \n> >    several option to a list.\n> \n> Changes since v2 is a minor but necessary mark-up fix, as we do not\n> want to leave `enclosing` mark-up elements unclosed.\n> \n> Will queue.  Shall we mark the topic for 'next' now?\n> \n> Thanks.\n\nI think so. Reworking the formatter logic will be proposed in another patch \nseries.\n\n\n\n\n\n"},{"id":"524331","messageId":"aKJJs7OkBIg7Y9J0@szeder.dev","threadId":"63603","inReplyTo":"0d461544c9d720e379a867a9713998bf09136885.1751914412.git.gitgitgadget@gmail.com","subject":"Re: [PATCH v3 7/9] doc: git-log: convert pretty formats to new doc format","fromName":"SZEDER Gábor","fromEmail":"szeder.dev@gmail.com","sentAt":"2025-08-17T21:29:23Z","receivedAt":"2025-08-17T21:29:26Z","isPatch":true,"sender":{"key":"szeder.dev@gmail.com","avatar":"https://avatars.githubusercontent.com/u/116324?v=4"},"body":"On Mon, Jul 07, 2025 at 06:53:30PM +0000, Jean-Noël Avila via GitGitGadget wrote:\n> From: =?UTF-8?q?Jean-No=C3=ABl=20Avila?= <jn.avila@free.fr>\n> \n> - Use _<placeholder>_ instead of <placeholder> in the description\n> - Use `backticks` for keywords and more complex option\n> descriptions. The new rendering engine will apply synopsis rules to\n> these spans.\n> \n> For all the formats in the form of %(foo), the formatting needs to be\n> heavier because we not want the parentheses to be rendered as syntax\n> elements,but as keywords, i.e. we need to circumvent the syntax highlighting\n> of synopsis.  In this particular case, this requires the heavy escaping of\n> the parts that contain parentheses with ++.\n> \n> Signed-off-by: Jean-Noël Avila <jn.avila@free.fr>\n> ---\n>  Documentation/pretty-formats.adoc | 283 +++++++++++++++---------------\n>  1 file changed, 143 insertions(+), 140 deletions(-)\n> \n> diff --git a/Documentation/pretty-formats.adoc b/Documentation/pretty-formats.adoc\n> index 07475de8c337..9ed0417fc811 100644\n> --- a/Documentation/pretty-formats.adoc\n> +++ b/Documentation/pretty-formats.adoc\n\n> +++%(decorate++`[:<option>,...]`++)++::\n>  ref names with custom decorations. The `decorate` string may be followed by a\n>  colon and zero or more comma-separated options. Option values may contain\n>  literal formatting codes. These must be used for commas (`%x2C`) and closing\n>  parentheses (`%x29`), due to their role in the option syntax.\n>  +\n> -** 'prefix=<value>': Shown before the list of ref names.  Defaults to \"{nbsp}`(`\".\n> -** 'suffix=<value>': Shown after the list of ref names.  Defaults to \"`)`\".\n> -** 'separator=<value>': Shown between ref names.  Defaults to \"`,`{nbsp}\".\n> -** 'pointer=<value>': Shown between HEAD and the branch it points to, if any.\n> -\t\t      Defaults to \"{nbsp}`->`{nbsp}\".\n> -** 'tag=<value>': Shown before tag names. Defaults to \"`tag:`{nbsp}\".\n> +** `prefix=<value>`: Shown before the list of ref names.  Defaults to \"{nbsp}+(+\".\n> +** `suffix=<value>`: Shown after the list of ref names.  Defaults to \"+)+\".\n> +** `separator=<value>`: Shown between ref names.  Defaults to \"+,+{nbsp}\".\n> +** `pointer=<value>`: Shown between HEAD and the branch it points to, if any.\n> +\t\t      Defaults to \"{nbsp}+->+{nbsp}\".\n> +** `tag=<value>`: Shown before tag names. Defaults to \"`tag:`{nbsp}\".\n>  \n>  +\n>  For example, to produce decorations with no wrapping\n>  or tag annotations, and spaces as separators:\n>  +\n> -`%(decorate:prefix=,suffix=,tag=,separator= )`\n> +++%(decorate:prefix=,suffix=,tag=,separator= )++\n\nThis section now looks like this when the man page is built with\nAsciidoctor:\n\n               %(decorate[:<option>,...])\n                   ref names with custom decorations. The decorate string may\n                   be followed by a colon and zero or more comma-separated\n                   options. Option values may contain literal formatting\n                   codes. These must be used for commas (%x2C) and closing\n                   parentheses (%x29), due to their role in the option syntax.\n                   parentheses (%x29), due to their role in the option syntax.\n\n                   •   prefix=<value>: Shown before the list of ref names.\n                       Defaults to \" +(+\".\n\n                   •   suffix=<value>: Shown after the list of ref names.\n                       Defaults to \")\".\n\n                   •   separator=<value>: Shown between ref names. Defaults to\n                       \", \".\n\n                   •   pointer=<value>: Shown between HEAD and the branch it\n                       points to, if any. Defaults to \" +→+ \".\n\n                   •   tag=<value>: Shown before tag names. Defaults to\n                       \"tag: \".\n\n           For example, to produce decorations with no wrapping or tag\n           annotations, and spaces as separators:\n\n           + %(decorate:prefix=,suffix=,tag=,separator= )\n\nNote the unnecessary + characters in the default values for 'prefix'\nand 'pointer', and in the latter the \"ASCII art\" arrow (\"->\") is now\nreplaced with a unicode arrow character.\n\nAlso note that the last three lines are not aligned properly and the\nexample format string starts with a + character as well, but this was\nthe case even before this patch.\n\nI use the distro packaged version of Asciidoctor:\n\n  $ asciidoctor --version\n  Asciidoctor 2.0.16 [https://asciidoctor.org]\n  Runtime Environment (ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x86_64-linux-gnu]) (lc:UTF-8 fs:UTF-8 in:UTF-8 ex:UTF-8)\n\n"},{"id":"524490","messageId":"20250819212340.73886-1-jn.avila@free.fr","threadId":"63603","inReplyTo":"aKJJs7OkBIg7Y9J0@szeder.dev","subject":"[PATCH] doc: fix asciidoc format compatibility in pretty-formats.adoc","fromName":"Jean-Noël Avila","fromEmail":"jn.avila@free.fr","sentAt":"2025-08-19T21:22:33Z","receivedAt":"2025-08-19T21:24:33Z","isPatch":true,"sender":{"key":"jn.avila@free.fr","avatar":"https://avatars.githubusercontent.com/u/156172?v=4"},"body":"Asciidoc.py and Asciidoctor do not process the same '+' verbatim syntax in\nthe same way. For most usages, Asciidoctor requires a double '+'.\n\nUnfortunately, the postprocessing of verbatim synopsis in asciidoctor cannot\nbe bypassed and formatting of the parentheses is forced in syntax sign\ninstead of keywords, unless a proper grammar analyzer is used.\n\nSigned-off-by: Jean-Noël Avila <jn.avila@free.fr>\n---\n Documentation/pretty-formats.adoc | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/Documentation/pretty-formats.adoc b/Documentation/pretty-formats.adoc\nindex 9ed0417fc8..618ddc4a0c 100644\n--- a/Documentation/pretty-formats.adoc\n+++ b/Documentation/pretty-formats.adoc\n@@ -233,11 +233,11 @@ colon and zero or more comma-separated options. Option values may contain\n literal formatting codes. These must be used for commas (`%x2C`) and closing\n parentheses (`%x29`), due to their role in the option syntax.\n +\n-** `prefix=<value>`: Shown before the list of ref names.  Defaults to \"{nbsp}+(+\".\n+** `prefix=<value>`: Shown before the list of ref names.  Defaults to \"{nbsp}++(++\".\n ** `suffix=<value>`: Shown after the list of ref names.  Defaults to \"+)+\".\n ** `separator=<value>`: Shown between ref names.  Defaults to \"+,+{nbsp}\".\n ** `pointer=<value>`: Shown between HEAD and the branch it points to, if any.\n-\t\t      Defaults to \"{nbsp}+->+{nbsp}\".\n+\t\t      Defaults to \"{nbsp}++->++{nbsp}\".\n ** `tag=<value>`: Shown before tag names. Defaults to \"`tag:`{nbsp}\".\n \n +\n-- \n2.51.0\n\n"},{"id":"524495","messageId":"xmqqa53vc77z.fsf@gitster.g","threadId":"63603","inReplyTo":"20250819212340.73886-1-jn.avila@free.fr","subject":"Re: [PATCH] doc: fix asciidoc format compatibility in pretty-formats.adoc","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2025-08-19T21:49:36Z","receivedAt":"2025-08-19T21:49:38Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Jean-Noël Avila <jn.avila@free.fr> writes:\n\n> Asciidoc.py and Asciidoctor do not process the same '+' verbatim syntax in\n> the same way. For most usages, Asciidoctor requires a double '+'.\n\nThe word \"same\" on the first line is probably unwanted?\n\n> Unfortunately, the postprocessing of verbatim synopsis in asciidoctor cannot\n> be bypassed and formatting of the parentheses is forced in syntax sign\n> instead of keywords, unless a proper grammar analyzer is used.\n\nSorry, I've read the above three times, but it would not explain why\nthe change is needed for the \"prefix\" line, but no change is needed\nfor the \"suffix\" line or for the \"separator\" line, even though they\nlook quite similar.  Is open-parenthesis somehow special?  And '>'\nalso special in the same way?\n\n>\n> Signed-off-by: Jean-Noël Avila <jn.avila@free.fr>\n> ---\n>  Documentation/pretty-formats.adoc | 4 ++--\n>  1 file changed, 2 insertions(+), 2 deletions(-)\n>\n> diff --git a/Documentation/pretty-formats.adoc b/Documentation/pretty-formats.adoc\n> index 9ed0417fc8..618ddc4a0c 100644\n> --- a/Documentation/pretty-formats.adoc\n> +++ b/Documentation/pretty-formats.adoc\n> @@ -233,11 +233,11 @@ colon and zero or more comma-separated options. Option values may contain\n>  literal formatting codes. These must be used for commas (`%x2C`) and closing\n>  parentheses (`%x29`), due to their role in the option syntax.\n>  +\n> -** `prefix=<value>`: Shown before the list of ref names.  Defaults to \"{nbsp}+(+\".\n> +** `prefix=<value>`: Shown before the list of ref names.  Defaults to \"{nbsp}++(++\".\n>  ** `suffix=<value>`: Shown after the list of ref names.  Defaults to \"+)+\".\n>  ** `separator=<value>`: Shown between ref names.  Defaults to \"+,+{nbsp}\".\n>  ** `pointer=<value>`: Shown between HEAD and the branch it points to, if any.\n> -\t\t      Defaults to \"{nbsp}+->+{nbsp}\".\n> +\t\t      Defaults to \"{nbsp}++->++{nbsp}\".\n>  ** `tag=<value>`: Shown before tag names. Defaults to \"`tag:`{nbsp}\".\n>  \n>  +\n"},{"id":"524555","messageId":"20250820203722.31268-1-jn.avila@free.fr","threadId":"63603","inReplyTo":"xmqqa53vc77z.fsf@gitster.g","subject":"[PATCH v2] doc: fix asciidoc format compatibility in pretty-formats.adoc","fromName":"Jean-Noël Avila","fromEmail":"jn.avila@free.fr","sentAt":"2025-08-20T20:26:10Z","receivedAt":"2025-08-20T20:37:56Z","isPatch":true,"sender":{"key":"jn.avila@free.fr","avatar":"https://avatars.githubusercontent.com/u/156172?v=4"},"body":"\nThe change is needed because Asciidoc.py and Asciidoctor\ndo not process the '+' verbatim the same way. A span is\ndetected when the format sign (here '+')is preceded by a\nnon-word character. I haven't digged into the source,\nbut it seems that '{nbsp}' is considered a non-word sign\nby Asciidoc.py, but not by Asciidoctor.\n\nUsing the double '+' opens 'unconstrained' span,\nindependent on the preceding character in both engines.\n"},{"id":"524556","messageId":"20250820203722.31268-2-jn.avila@free.fr","threadId":"63603","inReplyTo":"20250820203722.31268-1-jn.avila@free.fr","subject":"[PATCH v2] doc: fix asciidoc format compatibility in pretty-formats.adoc","fromName":"Jean-Noël Avila","fromEmail":"jn.avila@free.fr","sentAt":"2025-08-20T20:26:11Z","receivedAt":"2025-08-20T20:38:13Z","isPatch":true,"sender":{"key":"jn.avila@free.fr","avatar":"https://avatars.githubusercontent.com/u/156172?v=4"},"body":"Asciidoc.py and Asciidoctor do not parse the '+' verbatim syntax in the same\nway. For most usages, Asciidoctor requires a double '+'.\n\nUnfortunately, the post-processing of verbatim synopsis in asciidoctor\ncannot be bypassed and formatting of the parentheses is forced in syntax\nsign instead of keywords, unless a proper grammar analyzer is used.\n\nSigned-off-by: Jean-Noël Avila <jn.avila@free.fr>\n---\n Documentation/pretty-formats.adoc | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/Documentation/pretty-formats.adoc b/Documentation/pretty-formats.adoc\nindex 9ed0417fc8..618ddc4a0c 100644\n--- a/Documentation/pretty-formats.adoc\n+++ b/Documentation/pretty-formats.adoc\n@@ -233,11 +233,11 @@ colon and zero or more comma-separated options. Option values may contain\n literal formatting codes. These must be used for commas (`%x2C`) and closing\n parentheses (`%x29`), due to their role in the option syntax.\n +\n-** `prefix=<value>`: Shown before the list of ref names.  Defaults to \"{nbsp}+(+\".\n+** `prefix=<value>`: Shown before the list of ref names.  Defaults to \"{nbsp}++(++\".\n ** `suffix=<value>`: Shown after the list of ref names.  Defaults to \"+)+\".\n ** `separator=<value>`: Shown between ref names.  Defaults to \"+,+{nbsp}\".\n ** `pointer=<value>`: Shown between HEAD and the branch it points to, if any.\n-\t\t      Defaults to \"{nbsp}+->+{nbsp}\".\n+\t\t      Defaults to \"{nbsp}++->++{nbsp}\".\n ** `tag=<value>`: Shown before tag names. Defaults to \"`tag:`{nbsp}\".\n \n +\n-- \n2.51.0\n\n"},{"id":"524564","messageId":"4673610.LvFx2qVVIh@cayenne","threadId":"63603","inReplyTo":"xmqqa53vc77z.fsf@gitster.g","subject":"Re: [PATCH] doc: fix asciidoc format compatibility in pretty-formats.adoc","fromName":"Jean-Noël AVILA","fromEmail":"jn.avila@free.fr","sentAt":"2025-08-20T21:00:13Z","receivedAt":"2025-08-20T21:00:18Z","isPatch":true,"sender":{"key":"jn.avila@free.fr","avatar":"https://avatars.githubusercontent.com/u/156172?v=4"},"body":"On Tuesday, 19 August 2025 23:49:36 CEST Junio C Hamano wrote:\n> Jean-Noël Avila <jn.avila@free.fr> writes:\n> > Asciidoc.py and Asciidoctor do not process the same '+' verbatim syntax in\n> > the same way. For most usages, Asciidoctor requires a double '+'.\n> \n> The word \"same\" on the first line is probably unwanted?\n> \n\nDefinitely. Rerolled in V2.\n\n> > Unfortunately, the postprocessing of verbatim synopsis in asciidoctor \ncannot\n> > be bypassed and formatting of the parentheses is forced in syntax sign\n> > instead of keywords, unless a proper grammar analyzer is used.\n> \n> Sorry, I've read the above three times, but it would not explain why\n> the change is needed for the \"prefix\" line, but no change is needed\n> for the \"suffix\" line or for the \"separator\" line, even though they\n> look quite similar.  Is open-parenthesis somehow special?  And '>'\n> also special in the same way?\n\nThe detection of opening of spans in Asciidoc is driven by a span markup \ncharacter (here '+') preceded by a non-word character. The condition is \nsymmetrical for closing of spans. I haven't dug into the source code, but it \nseems that asciidoc.py considers '{nbsp}' as a non-word character, whereas \nAsciidoctor does not.\n\nUsing double markup characters creates 'unconstrained' spans, which do not \nneed the non-word character condition.\n\nNote also that this \"feature\" is very centric on roman based languages (like \nmany of light markup design decisions) and is a pain in other writing systems \nwhich do not require space between words.\n\n> \n> > Signed-off-by: Jean-Noël Avila <jn.avila@free.fr>\n> > ---\n> > \n> >  Documentation/pretty-formats.adoc | 4 ++--\n> >  1 file changed, 2 insertions(+), 2 deletions(-)\n> > \n> > diff --git a/Documentation/pretty-formats.adoc\n> > b/Documentation/pretty-formats.adoc\n> > index 9ed0417fc8..618ddc4a0c 100644\n> > --- a/Documentation/pretty-formats.adoc\n> > +++ b/Documentation/pretty-formats.adoc\n> > @@ -233,11 +233,11 @@ colon and zero or more comma-separated options. \nOption\n> > values may contain> \n> >  literal formatting codes. These must be used for commas (`%x2C`) and \nclosing\n> >  parentheses (`%x29`), due to their role in the option syntax.\n> >  +\n> > \n> > -** `prefix=<value>`: Shown before the list of ref names.  Defaults to\n> > \"{nbsp}+(+\". +** `prefix=<value>`: Shown before the list of ref names.  \nDefaults\n> > to \"{nbsp}++(++\".> \n> >  ** `suffix=<value>`: Shown after the list of ref names.  Defaults to \"+)\n+\".\n> >  ** `separator=<value>`: Shown between ref names.  Defaults to \"+,+\n{nbsp}\".\n> >  ** `pointer=<value>`: Shown between HEAD and the branch it points to, if \nany.\n> > \n> > -\t\t      Defaults to \"{nbsp}+->+{nbsp}\".\n> > +\t\t      Defaults to \"{nbsp}++->++{nbsp}\".\n> > \n> >  ** `tag=<value>`: Shown before tag names. Defaults to \"`tag:`{nbsp}\".\n> >  \n> >  +\n\n\n\n\n"},{"id":"524566","messageId":"xmqqwm6x904z.fsf@gitster.g","threadId":"63603","inReplyTo":"20250820203722.31268-1-jn.avila@free.fr","subject":"Re: [PATCH v2] doc: fix asciidoc format compatibility in pretty-formats.adoc","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2025-08-20T21:03:08Z","receivedAt":"2025-08-20T21:03:10Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Jean-Noël Avila <jn.avila@free.fr> writes:\n\n> The change is needed because Asciidoc.py and Asciidoctor\n> do not process the '+' verbatim the same way. A span is\n> detected when the format sign (here '+')is preceded by a\n> non-word character. I haven't digged into the source,\n> but it seems that '{nbsp}' is considered a non-word sign\n> by Asciidoc.py, but not by Asciidoctor.\n>\n> Using the double '+' opens 'unconstrained' span,\n> independent on the preceding character in both engines.\n\nThanks for explaining.  \n\nIt is especially nice to see \"independent on the preceding character\nin both engines\", meaning that this fixes Asciidoctor while not\nbreaking Asciidoc ;-)\n\nNow, can you do give the explanation in the proposed commit log\nmessage, so that later people do not have to ask the same question\nwhile reading \"git log -p\" output?\n\nThanks.\n"},{"id":"524575","messageId":"20250820212319.41044-1-jn.avila@free.fr","threadId":"63603","inReplyTo":"aKJJs7OkBIg7Y9J0@szeder.dev","subject":"[PATCH v3] doc: fix asciidoc format compatibility in pretty-formats.adoc","fromName":"Jean-Noël Avila","fromEmail":"jn.avila@free.fr","sentAt":"2025-08-20T21:23:19Z","receivedAt":"2025-08-20T21:23:45Z","isPatch":true,"sender":{"key":"jn.avila@free.fr","avatar":"https://avatars.githubusercontent.com/u/156172?v=4"},"body":"Asciidoc.py and Asciidoctor do not process the '+' verbatim the same way. A\nspan is detected when the format sign (here '+')is preceded by a non-word\ncharacter. It seems that '{nbsp}' is considered a non-word sign by\nAsciidoc.py, but not by Asciidoctor.\n\nUsing a double format-sign opens 'unconstrained' span, independent on the\npreceding character in both engines.\n\nThe '+' sign is used instead of the backtick '`' because it is not processed\nas synopsis in asciidoc.py. Unfortunately, the post-processing of verbatim\nsynopsis in asciidoctor cannot be bypassed and formatting of the parentheses\nis forced in syntax sign instead of keywords, unless a proper grammar\nanalyzer is used.\n\nSigned-off-by: Jean-Noël Avila <jn.avila@free.fr>\n---\n Documentation/pretty-formats.adoc | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/Documentation/pretty-formats.adoc b/Documentation/pretty-formats.adoc\nindex 9ed0417fc8..618ddc4a0c 100644\n--- a/Documentation/pretty-formats.adoc\n+++ b/Documentation/pretty-formats.adoc\n@@ -233,11 +233,11 @@ colon and zero or more comma-separated options. Option values may contain\n literal formatting codes. These must be used for commas (`%x2C`) and closing\n parentheses (`%x29`), due to their role in the option syntax.\n +\n-** `prefix=<value>`: Shown before the list of ref names.  Defaults to \"{nbsp}+(+\".\n+** `prefix=<value>`: Shown before the list of ref names.  Defaults to \"{nbsp}++(++\".\n ** `suffix=<value>`: Shown after the list of ref names.  Defaults to \"+)+\".\n ** `separator=<value>`: Shown between ref names.  Defaults to \"+,+{nbsp}\".\n ** `pointer=<value>`: Shown between HEAD and the branch it points to, if any.\n-\t\t      Defaults to \"{nbsp}+->+{nbsp}\".\n+\t\t      Defaults to \"{nbsp}++->++{nbsp}\".\n ** `tag=<value>`: Shown before tag names. Defaults to \"`tag:`{nbsp}\".\n \n +\n-- \n2.51.0\n\n"}]}