git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v3 4/8] doc: give headings for the two and three dot notations

From
Marc Branchaud <marcnarc@xiplink.com>
Date
Jul 12, 2016, 13:44 UTC
Message-ID
<5784F43E.3080400@xiplink.com>
In-Reply-To
<20160711202518.532-5-philipoakley@iee.org>
On 2016-07-11 04:25 PM, Philip Oakley wrote:
Show 22 quoted lines
> While there, also break out the other shorthand notations and
> add a title for the revision range summary (which also appears
> in git-rev-parse, so keep it mixed case).
>
> Signed-off-by: Philip Oakley <philipoakley@iee.org>
> ---
>   Documentation/revisions.txt | 23 +++++++++++++++++------
>   1 file changed, 17 insertions(+), 6 deletions(-)
>
> diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt
> index 79f6d03..1c59e87 100644
> --- a/Documentation/revisions.txt
> +++ b/Documentation/revisions.txt
> @@ -242,35 +242,46 @@ specifying a single revision with the notation described in the
>   previous section means the set of commits reachable from that
>   commit, following the commit ancestry chain.
>
> +The '{caret}' (caret) notation
> +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>   To exclude commits reachable from a commit, a prefix '{caret}'
>   notation is used.  E.g. '{caret}r1 r2' means commits reachable
>   from 'r2' but exclude the ones reachable from 'r1'.

All of these headings render poorly in the manpage, at least for me (Ubuntu 16.04). Only the first word appears in bold; the '-quoted text is not bold but underlined, and the rest of the header is plain.

Also, I think calling this "The ^ notation" is confusing, because there's already an earlier paragraph on the "<rev>^" syntax.

Maybe we don't need a header here? I only suggest that because I'm having trouble coming up with a nice alternative. "Commit Exclusion"?

>
> -This set operation appears so often that there is a shorthand
> +The '..' (two-dot) range notation
> +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Perhaps "Range notation", to mirror the capitalization of "Symmetric Difference" in the next header?

Show 21 quoted lines
> +The '{caret}r1 r2' set operation appears so often that there is a shorthand
>   for it.  When you have two commits 'r1' and 'r2' (named according
>   to the syntax explained in SPECIFYING REVISIONS above), you can ask
>   for commits that are reachable from r2 excluding those that are reachable
>   from r1 by '{caret}r1 r2' and it can be written as 'r1..r2'.
>
> +The '...' (three dot) Symmetric Difference notation
> +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>   A similar notation 'r1\...r2' is called symmetric difference
>   of 'r1' and 'r2' and is defined as
>   'r1 r2 --not $(git merge-base --all r1 r2)'.
>   It is the set of commits that are reachable from either one of
>   'r1' (Left side) or 'r2' (Right side) but not from both.
>
> -In these two shorthands, you can omit one end and let it default to HEAD.
> +In these two shorthand notations, you can omit one end and let it default to HEAD.
>   For example, 'origin..' is a shorthand for 'origin..HEAD' and asks "What
>   did I do since I forked from the origin branch?"  Similarly, '..origin'
>   is a shorthand for 'HEAD..origin' and asks "What did the origin do since
>   I forked from them?"  Note that '..' would mean 'HEAD..HEAD' which is an
>   empty range that is both reachable and unreachable from HEAD.

Unfortunately the new headings make it appear that this paragraph is exclusively part of the '...' notation section. Folks reading the '..' section are likely to skip it.

I like the examples, though. I think it would be worthwhile to remove this paragraph and fold it explicitly into the '..' and '...' notation sections.

So add something like this to the '..' section (only the first sentence here is new):

	Either r1 or r2 can be omitted, in which case HEAD is used as
	the default.  For example, 'origin..' is a shorthand for
	'origin..HEAD' and asks "What did I do since I forked from the
	origin branch?"  Similarly, '..origin' is a shorthand for
	'HEAD..origin' and asks "What did the origin do since I forked
	from them?"  Note that '..' would mean 'HEAD..HEAD' which is an
	empty range that is both reachable and unreachable from HEAD.

And also, add the same first sentence and a different example to the '...' section. Something like this:

	Either r1 or r2 can be omitted, in which case HEAD is used as
	the default.  For example, 'origin...' is a shorthand for
	'origin...HEAD' and asks "What have I and origin both done
	since I forked from the origin branch?"  Note that 'origin...'
	and '...origin' ask the same question.
Show 8 quoted lines
>
> +Additional '{caret}' Shorthand notations
> +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>   Two other shorthands for naming a set that is formed by a commit
> -and its parent commits exist.  The 'r1{caret}@' notation means all
> -parents of 'r1'.  'r1{caret}!' includes commit 'r1' but excludes
> -all of its parents.
> +and its parent commits exist.

I think descriptions of <rev>^@ and <rev>^! should live under the main description of <rev>^. That part already describes the numeric suffix, so describing a couple of special suffixes there seems like a natural fit.

However, if you choose to keep this little section, you need to move the word "exist" earlier in the sentence:

	Two other shorthands exist for naming a set that is formed
	by a commit and its parent commits.
Show 8 quoted lines
>
> -To summarize:
> +The 'r1{caret}@' notation means all parents of 'r1'.
> +
> +'r1{caret}!' includes commit 'r1' but excludes all of its parents.
> +
> +Revision Range Summary
> +----------------------
I think this should be a sub-heading (~~~~~~~), not a top-level heading.
		M.
Previous: Philip OakleyNext: Junio C Hamano
Message 24 of 107 in “name for A..B ranges?”
  1. Philip OakleyJun 22, 2016
  2. Jeff KingJun 24, 2016
  3. Junio C HamanoJun 24, 2016
  4. Philip OakleyJun 25, 2016
  5. 0/2 Re: name for A..B ranges?Philip Oakley, Jun 25, 2016
  6. 2/2 doc: give headings for the two and three dot notationsPhilip Oakley, Jun 25, 2016
  7. 1/2 doc: use 'symmetric difference' consistentlyPhilip Oakley, Jun 25, 2016
  8. doc: show the actual left, right, and boundary marksPhilip Oakley, Jun 25, 2016
  9. 0/4 Name for A..B ranges?Philip Oakley, Jun 30, 2016
  10. 1/4 doc: use 'symmetric difference' consistentlyPhilip Oakley, Jun 30, 2016
  11. 3/4 doc: give headings for the two and three dot notationsPhilip Oakley, Jun 30, 2016
  12. 4/4 doc: clarify that `^r1` will exclude `r1` itselfPhilip Oakley, Jun 30, 2016
  13. Junio C HamanoJul 1, 2016
  14. Philip OakleyJul 1, 2016
  15. Junio C HamanoJul 1, 2016
  16. Junio C HamanoJul 1, 2016
  17. Philip OakleyJul 10, 2016
  18. 2/4 doc: show the actual left, right, and boundary marksPhilip Oakley, Jun 30, 2016
  19. Junio C HamanoJul 1, 2016
  20. 0/8 Name for A..B ranges?Philip Oakley, Jul 11, 2016
  21. 1/8 doc: use 'symmetric difference' consistentlyPhilip Oakley, Jul 11, 2016
  22. 3/8 doc: show the actual left, right, and boundary marksPhilip Oakley, Jul 11, 2016
  23. 4/8 doc: give headings for the two and three dot notationsPhilip Oakley, Jul 11, 2016
  24. Marc BranchaudJul 12, 2016
  25. Junio C HamanoJul 12, 2016
  26. Philip OakleyJul 12, 2016
  27. Jakub NarębskiJul 19, 2016
  28. Philip OakleyJul 19, 2016
  29. Philip OakleyJul 12, 2016
  30. Jeff KingJul 12, 2016
  31. 5/8 doc: gitrevisions - use 'reachable' in page descriptionPhilip Oakley, Jul 11, 2016
  32. 6/8 doc: gitrevisions - clarify 'latter case' is revision walkPhilip Oakley, Jul 11, 2016
  33. 7/8 doc: revisions - define `reachable`Philip Oakley, Jul 11, 2016
  34. Marc BranchaudJul 12, 2016
  35. Philip OakleyJul 12, 2016
  36. 8/8 doc: revisions - clarify reachability examplesPhilip Oakley, Jul 11, 2016
  37. 2/8 doc: revisions - name the Left and Right sidesPhilip Oakley, Jul 11, 2016
  38. Junio C HamanoJul 12, 2016
  39. Philip OakleyJul 12, 2016
  40. Junio C HamanoJul 12, 2016
  41. Philip OakleyJul 12, 2016
  42. 0/8 Name for A..B ranges?Philip Oakley, Jul 20, 2016
  43. 2/8 doc: revisions - name the left and right sidesPhilip Oakley, Jul 20, 2016
  44. 7/8 doc: revisions - define `reachable`Philip Oakley, Jul 20, 2016
  45. 8/8 doc: revisions - clarify reachability examplesPhilip Oakley, Jul 20, 2016
  46. 6/8 doc: gitrevisions - clarify 'latter case' is revision walkPhilip Oakley, Jul 20, 2016
  47. 3/8 doc: show the actual left, right, and boundary marksPhilip Oakley, Jul 20, 2016
  48. 1/8 doc: use 'symmetric difference' consistentlyPhilip Oakley, Jul 20, 2016
  49. 5/8 doc: gitrevisions - use 'reachable' in page descriptionPhilip Oakley, Jul 20, 2016
  50. 4/8 doc: give headings for the two and three dot notationsPhilip Oakley, Jul 20, 2016
  51. Marc BranchaudJul 21, 2016
  52. Philip OakleyJul 21, 2016
  53. Marc BranchaudJul 21, 2016
  54. Junio C HamanoJul 22, 2016
  55. Junio C HamanoJul 20, 2016
  56. 00/12 Update git revisionsPhilip Oakley, Aug 11, 2016
  57. 01/12 doc: use 'symmetric difference' consistentlyPhilip Oakley, Aug 11, 2016
  58. Jakub NarębskiAug 26, 2016
  59. Junio C HamanoAug 26, 2016
  60. Philip OakleyAug 11, 2016
  61. 00/12 Update git revisionsPhilip Oakley, Aug 12, 2016
  62. 06/12 doc: revisions: single vs multi-parent notation comparisonPhilip Oakley, Aug 12, 2016
  63. Jakub NarębskiAug 26, 2016
  64. Junio C HamanoAug 26, 2016
  65. 12/12 doc: revisions: sort examples and fix alignment of the unchangedPhilip Oakley, Aug 12, 2016
  66. 11/12 doc: revisions: show revision expansion in examplesPhilip Oakley, Aug 12, 2016
  67. 05/12 doc: revisions: extra clarification of <rev>^! notation effectsPhilip Oakley, Aug 12, 2016
  68. Marc BranchaudAug 15, 2016
  69. Philip OakleyAug 15, 2016
  70. BUG: indent-with-non-tab always on (was: Re: [PATCH v6 00/12] Update git revisions)Marc Branchaud, Aug 15, 2016
  71. Marc BranchaudAug 15, 2016
  72. Junio C HamanoAug 15, 2016
  73. Junio C HamanoAug 31, 2016
  74. 00/12 Update git revisionsPhilip Oakley, Aug 11, 2016
  75. 01/12 doc: use 'symmetric difference' consistentlyPhilip Oakley, Aug 11, 2016
  76. 00/12 Update git revisionsPhilip Oakley, Aug 12, 2016
  77. 12/12 doc: revisions: sort examples and fix alignment of the unchangedPhilip Oakley, Aug 12, 2016
  78. 09/12 doc: revisions - define `reachable`Philip Oakley, Aug 12, 2016
  79. Jakub NarębskiAug 28, 2016
  80. Philip OakleyAug 29, 2016
  81. Jakub NarębskiAug 29, 2016
  82. Philip OakleyAug 29, 2016
  83. 08/12 doc: gitrevisions - clarify 'latter case' is revision walkPhilip Oakley, Aug 12, 2016
  84. 11/12 doc: revisions: show revision expansion in examplesPhilip Oakley, Aug 12, 2016
  85. Marc BranchaudAug 12, 2016
  86. Philip OakleyAug 12, 2016
  87. 06/12 doc: revisions: single vs multi-parent notation comparisonPhilip Oakley, Aug 12, 2016
  88. Marc BranchaudAug 12, 2016
  89. Philip OakleyAug 12, 2016
  90. 10/12 doc: revisions - clarify reachability examplesPhilip Oakley, Aug 12, 2016
  91. 05/12 doc: revisions: extra clarification of <rev>^! notation effectsPhilip Oakley, Aug 12, 2016
  92. Marc BranchaudAug 12, 2016
  93. Philip OakleyAug 12, 2016
  94. 03/12 doc: show the actual left, right, and boundary marksPhilip Oakley, Aug 12, 2016
  95. 01/12 doc: use 'symmetric difference' consistentlyPhilip Oakley, Aug 12, 2016
  96. 07/12 doc: gitrevisions - use 'reachable' in page descriptionPhilip Oakley, Aug 12, 2016
  97. 04/12 doc: revisions: give headings for the two and three dot notationsPhilip Oakley, Aug 12, 2016
  98. Jeff KingAug 12, 2016
  99. Marc BranchaudAug 12, 2016
  100. 02/12 doc: revisions - name the left and right sidesPhilip Oakley, Aug 12, 2016
  101. Marc BranchaudAug 12, 2016
  102. Philip OakleyAug 12, 2016
  103. Junio C HamanoAug 12, 2016
  104. Junio C HamanoJun 25, 2016
  105. Philip OakleyJun 27, 2016
  106. Junio C HamanoJun 27, 2016
  107. Philip OakleyJun 27, 2016

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.