git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* name for A..B ranges?
@ 2016-06-22  7:25 Philip Oakley
  2016-06-24 16:09 ` Jeff King
  0 siblings, 1 reply; 107+ messages in thread
From: Philip Oakley @ 2016-06-22  7:25 UTC (permalink / raw)
  To: Git List

Hi,

Is there a common name for the A..B range format (two dots) that would 
complement the A...B (three dots) symmetric range format's name?

I was looking at the --left-right distinctions and noticed that the trail 
back to the symmetric range description was rather thin (it's buried within 
gitrevisions:Specifying Ranges, and even then its called a symmetric 
difference.

Philip 


^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: name for A..B ranges?
  2016-06-22  7:25 name for A..B ranges? Philip Oakley
@ 2016-06-24 16:09 ` Jeff King
  2016-06-24 16:44   ` Junio C Hamano
  0 siblings, 1 reply; 107+ messages in thread
From: Jeff King @ 2016-06-24 16:09 UTC (permalink / raw)
  To: Philip Oakley; +Cc: Git List

On Wed, Jun 22, 2016 at 08:25:59AM +0100, Philip Oakley wrote:

> Is there a common name for the A..B range format (two dots) that would
> complement the A...B (three dots) symmetric range format's name?
> 
> I was looking at the --left-right distinctions and noticed that the trail
> back to the symmetric range description was rather thin (it's buried within
> gitrevisions:Specifying Ranges, and even then its called a symmetric
> difference.

I would just call it a range, or possibly a set difference. But I don't
think we have any established naming beyond that.

-Peff

^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: name for A..B ranges?
  2016-06-24 16:09 ` Jeff King
@ 2016-06-24 16:44   ` Junio C Hamano
  2016-06-25 13:50     ` Philip Oakley
  0 siblings, 1 reply; 107+ messages in thread
From: Junio C Hamano @ 2016-06-24 16:44 UTC (permalink / raw)
  To: Jeff King; +Cc: Philip Oakley, Git List

Jeff King <peff@peff.net> writes:

> On Wed, Jun 22, 2016 at 08:25:59AM +0100, Philip Oakley wrote:
>
>> Is there a common name for the A..B range format (two dots) that would
>> complement the A...B (three dots) symmetric range format's name?
>> 
>> I was looking at the --left-right distinctions and noticed that the trail
>> back to the symmetric range description was rather thin (it's buried within
>> gitrevisions:Specifying Ranges, and even then its called a symmetric
>> difference.
>
> I would just call it a range, or possibly a set difference. But I don't
> think we have any established naming beyond that.

Yup, I think "range" is the commonly used word in discussions here.
When inventing A...B as a new thing in addition to A..B, we called
the former "symmetric difference", and what is implied by that is
the latter is "asymmetric difference"; we do not say that unless we
are contrasting between the two, though.

^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: name for A..B ranges?
  2016-06-24 16:44   ` Junio C Hamano
@ 2016-06-25 13:50     ` Philip Oakley
  2016-06-25 16:46       ` [PATCH 0/2] " Philip Oakley
  2016-06-25 19:49       ` name for A..B ranges? Junio C Hamano
  0 siblings, 2 replies; 107+ messages in thread
From: Philip Oakley @ 2016-06-25 13:50 UTC (permalink / raw)
  To: Junio C Hamano, Jeff King; +Cc: Git List

From: "Junio C Hamano" <gitster@pobox.com>
> Jeff King <peff@peff.net> writes:
>
>> On Wed, Jun 22, 2016 at 08:25:59AM +0100, Philip Oakley wrote:
>>
>>> Is there a common name for the A..B range format (two dots) that would
>>> complement the A...B (three dots) symmetric range format's name?
>>>
>>> I was looking at the --left-right distinctions and noticed that the 
>>> trail
>>> back to the symmetric range description was rather thin (it's buried 
>>> within
>>> gitrevisions:Specifying Ranges, and even then its called a symmetric
>>> difference.
>>
>> I would just call it a range, or possibly a set difference. But I don't
>> think we have any established naming beyond that.
>
> Yup, I think "range" is the commonly used word in discussions here.
> When inventing A...B as a new thing in addition to A..B, we called
> the former "symmetric difference", and what is implied by that is
> the latter is "asymmetric difference"; we do not say that unless we
> are contrasting between the two, though.
>
I asked because the man page does indicae that it (A..B) is a special sort 
of revison range and "there is a shorthand for it", but then didn't have a 
way of naming it.

The symmetric difference is then brought in as a further similar notation. 
There are a number of Stackoverflow questions about the differences betwee 
'two dots' and 'three dots' as well, so having a word/phrase for it could 
help.

I was thinking that maybe "single-sided difference (two dots)" maybe one 
choice that is relatively neutral (or even a "two-dot range"...).

--
Philip 


^ permalink raw reply	[flat|nested] 107+ messages in thread

* [PATCH 0/2] Re: name for A..B ranges?
  2016-06-25 13:50     ` Philip Oakley
@ 2016-06-25 16:46       ` Philip Oakley
  2016-06-25 16:46         ` [PATCH 1/2] doc: use 'symmetric difference' consistently Philip Oakley
                           ` (3 more replies)
  2016-06-25 19:49       ` name for A..B ranges? Junio C Hamano
  1 sibling, 4 replies; 107+ messages in thread
From: Philip Oakley @ 2016-06-25 16:46 UTC (permalink / raw)
  To: GitList; +Cc: Junio C Hamano, Jeff King

>> On Wed, Jun 22, 2016 at 08:25:59AM +0100, Philip Oakley wrote:
>>
>>> Is there a common name for the A..B range format (two dots) that would
>>> complement the A...B (three dots) symmetric range format's name?
$gmane/297908

Here is a short two patch series to hopefully enhance the
revisions (and rev-parse) man page to help clarify the symmetric
difference and two / three dots notations.

The HTML versions look OK to me - tested on the Git-for-Windows SDK.

Philip Oakley (2):
  doc: use 'symmetric difference' consistently
  doc: give headings for the two and three dot notations

 Documentation/gitk.txt             |  2 +-
 Documentation/rev-list-options.txt |  4 ++--
 Documentation/revisions.txt        | 17 +++++++++++++----
 3 files changed, 16 insertions(+), 7 deletions(-)

-- 
2.8.4.windows.1.3.ge328a54

^ permalink raw reply	[flat|nested] 107+ messages in thread

* [PATCH 1/2] doc: use 'symmetric difference' consistently
  2016-06-25 16:46       ` [PATCH 0/2] " Philip Oakley
@ 2016-06-25 16:46         ` Philip Oakley
  2016-06-25 16:46         ` [PATCH 2/2] doc: give headings for the two and three dot notations Philip Oakley
                           ` (2 subsequent siblings)
  3 siblings, 0 replies; 107+ messages in thread
From: Philip Oakley @ 2016-06-25 16:46 UTC (permalink / raw)
  To: GitList; +Cc: Junio C Hamano, Jeff King

Signed-off-by: Philip Oakley <philipoakley@iee.org>
---
 Documentation/gitk.txt             | 2 +-
 Documentation/rev-list-options.txt | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/Documentation/gitk.txt b/Documentation/gitk.txt
index 6ade002..6c3eb15 100644
--- a/Documentation/gitk.txt
+++ b/Documentation/gitk.txt
@@ -70,7 +70,7 @@ linkgit:git-rev-list[1] for a complete list.
 
 --left-right::
 
-	Mark which side of a symmetric diff a commit is reachable
+	Mark which side of a symmetric difference a commit is reachable
 	from.  Commits from the left side are prefixed with a `<`
 	symbol and those from the right with a `>` symbol.
 
diff --git a/Documentation/rev-list-options.txt b/Documentation/rev-list-options.txt
index 4f009d4..6dc0bb0 100644
--- a/Documentation/rev-list-options.txt
+++ b/Documentation/rev-list-options.txt
@@ -225,7 +225,7 @@ excluded from the output.
 
 --left-only::
 --right-only::
-	List only commits on the respective side of a symmetric range,
+	List only commits on the respective side of a symmetric difference,
 	i.e. only those which would be marked `<` resp. `>` by
 	`--left-right`.
 +
@@ -766,7 +766,7 @@ ifdef::git-rev-list[]
 endif::git-rev-list[]
 
 --left-right::
-	Mark which side of a symmetric diff a commit is reachable from.
+	Mark which side of a symmetric difference a commit is reachable from.
 	Commits from the left side are prefixed with `<` and those from
 	the right with `>`.  If combined with `--boundary`, those
 	commits are prefixed with `-`.
-- 
2.8.4.windows.1.3.ge328a54


^ permalink raw reply related	[flat|nested] 107+ messages in thread

* [PATCH 2/2] doc: give headings for the two and three dot notations
  2016-06-25 16:46       ` [PATCH 0/2] " Philip Oakley
  2016-06-25 16:46         ` [PATCH 1/2] doc: use 'symmetric difference' consistently Philip Oakley
@ 2016-06-25 16:46         ` Philip Oakley
  2016-06-25 18:47         ` [PATCH] doc: show the actual left, right, and boundary marks Philip Oakley
  2016-06-30 20:25         ` [PATCH v2 0/4] Name for A..B ranges? Philip Oakley
  3 siblings, 0 replies; 107+ messages in thread
From: Philip Oakley @ 2016-06-25 16:46 UTC (permalink / raw)
  To: GitList; +Cc: Junio C Hamano, Jeff King

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).

Signed-off-by: Philip Oakley <philipoakley@iee.org>
---
 Documentation/revisions.txt | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt
index 19314e3..c7e123a 100644
--- a/Documentation/revisions.txt
+++ b/Documentation/revisions.txt
@@ -246,12 +246,16 @@ 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'.
 
+Single-Sided Difference (two dots)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 This 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'.
 
+Symmetric Difference (three dots)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 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)'.
@@ -265,12 +269,17 @@ 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.
 
+The '{caret}' Shorthands
+~~~~~~~~~~~~~~~~~~~~~~~~
 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.
 
-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
+----------------------
 
 '<rev>'::
 	Include commits that are reachable from (i.e. ancestors of)
-- 
2.8.4.windows.1.3.ge328a54


^ permalink raw reply related	[flat|nested] 107+ messages in thread

* [PATCH] doc: show the actual left, right, and boundary marks
  2016-06-25 16:46       ` [PATCH 0/2] " Philip Oakley
  2016-06-25 16:46         ` [PATCH 1/2] doc: use 'symmetric difference' consistently Philip Oakley
  2016-06-25 16:46         ` [PATCH 2/2] doc: give headings for the two and three dot notations Philip Oakley
@ 2016-06-25 18:47         ` Philip Oakley
  2016-06-30 20:25         ` [PATCH v2 0/4] Name for A..B ranges? Philip Oakley
  3 siblings, 0 replies; 107+ messages in thread
From: Philip Oakley @ 2016-06-25 18:47 UTC (permalink / raw)
  To: GitList; +Cc: Junio C Hamano, Jeff King

Signed-off-by: Philip Oakley <philipoakley@iee.org>
---
This is a quick follow on to the 'symmetric difference' documentation patches
http://thread.gmane.org/gmane.comp.version-control.git/297908/focus=298223
where I checked all the uses of 'left' to see if other terms had been used.

I noticed that the actual marks were not being shown here, leaving the reader
with a difficult seach.


---
 Documentation/pretty-formats.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Documentation/pretty-formats.txt b/Documentation/pretty-formats.txt
index 29b19b9..10719e1 100644
--- a/Documentation/pretty-formats.txt
+++ b/Documentation/pretty-formats.txt
@@ -166,7 +166,7 @@ endif::git-rev-list[]
   respecting the `auto` settings of the former if we are going to a
   terminal). `auto` alone (i.e. `%C(auto)`) will turn on auto coloring
   on the next placeholders until the color is switched again.
-- '%m': left, right or boundary mark
+- '%m': left (`<`), right (`>`) or boundary (`-`) mark
 - '%n': newline
 - '%%': a raw '%'
 - '%x00': print a byte from a hex code
-- 
2.8.4.windows.1.3.ge328a54


^ permalink raw reply related	[flat|nested] 107+ messages in thread

* Re: name for A..B ranges?
  2016-06-25 13:50     ` Philip Oakley
  2016-06-25 16:46       ` [PATCH 0/2] " Philip Oakley
@ 2016-06-25 19:49       ` Junio C Hamano
  2016-06-27 13:37         ` Philip Oakley
  1 sibling, 1 reply; 107+ messages in thread
From: Junio C Hamano @ 2016-06-25 19:49 UTC (permalink / raw)
  To: Philip Oakley; +Cc: Jeff King, Git List

"Philip Oakley" <philipoakley@iee.org> writes:

>> Yup, I think "range" is the commonly used word in discussions here.
>> When inventing A...B as a new thing in addition to A..B, we called
>> the former "symmetric difference", and what is implied by that is
>> the latter is "asymmetric difference"; we do not say that unless we
>> are contrasting between the two, though.
>>
> I asked because the man page does indicae that it (A..B) is a special
> sort of revison range and "there is a shorthand for it", but then
> didn't have a way of naming it.

I do not see "is a special sort of revision range" improved in your
two patches, though.

Knowing that A..B is merely a short-hand for ^A B is important to
understand how revision ranges work (e.g. "A..B C" is not "union of
A..B and C"), so I think it is worth addressing if the existing
description appeared to you that it may confuse readers.

> The symmetric difference is then brought in as a further similar
> notation. There are a number of Stackoverflow questions about the
> differences betwee 'two dots' and 'three dots' as well, so having a
> word/phrase for it could help.
>
> I was thinking that maybe "single-sided difference (two dots)" maybe
> one choice that is relatively neutral (or even a "two-dot range"...).

When contrasting .. and ..., we have always used "asymmetric" vs
"symmetric".  I'd prefer to see usnot invent new phrase nobody has
used, which leads to unnecessary confusion and learning burden.

^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: name for A..B ranges?
  2016-06-25 19:49       ` name for A..B ranges? Junio C Hamano
@ 2016-06-27 13:37         ` Philip Oakley
  2016-06-27 15:08           ` Junio C Hamano
  0 siblings, 1 reply; 107+ messages in thread
From: Philip Oakley @ 2016-06-27 13:37 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Jeff King, Git List

From: "Junio C Hamano" <gitster@pobox.com>
> "Philip Oakley" <philipoakley@iee.org> writes:
>
>>> Yup, I think "range" is the commonly used word in discussions here.
>>> When inventing A...B as a new thing in addition to A..B, we called
>>> the former "symmetric difference", and what is implied by that is
>>> the latter is "asymmetric difference"; we do not say that unless we
>>> are contrasting between the two, though.
>>>
>> I asked because the man page does indicae that it (A..B) is a special
>> sort of revison range and "there is a shorthand for it", but then
>> didn't have a way of naming it.
>
> I do not see "is a special sort of revision range" improved in your
> two patches, though.

Hi Junio

I'm not sure what's meant here. That patch was about ensuring that the 
relevant syntax notations had headings to make them more easily locatable, 
not to change the explanations.

>
> Knowing that A..B is merely a short-hand for ^A B is important to
> understand how revision ranges work (e.g. "A..B C" is not "union of
> A..B and C"), so I think it is worth addressing if the existing
> description appeared to you that it may confuse readers.

I felt the explanations, once found, were OK. It was the discovery step I 
was hoepfully addressing.
>
>> The symmetric difference is then brought in as a further similar
>> notation. There are a number of Stackoverflow questions about the
>> differences betwee 'two dots' and 'three dots' as well, so having a
>> word/phrase for it could help.
>>
>> I was thinking that maybe "single-sided difference (two dots)" maybe
>> one choice that is relatively neutral (or even a "two-dot range"...).
>
> When contrasting .. and ..., we have always used "asymmetric" vs
> "symmetric".  I'd prefer to see usnot invent new phrase nobody has
> used, which leads to unnecessary confusion and learning burden.

Rather than trying to find a complement to the previously invented 
"symmetric difference" name (for the section heading), I was wondering if an 
alternative would be to refer to it via [use the headings of] it's notation, 
i.e. "the 'two-dot' range notation" (or 'syntax' is that is preferred), and 
the "three-dot symmetric difference notation".

The existing explanatory text can stand as is, but they would now have a 
section for readers to find.

Or should I just drop this?

--
Philip


^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: name for A..B ranges?
  2016-06-27 13:37         ` Philip Oakley
@ 2016-06-27 15:08           ` Junio C Hamano
  2016-06-27 15:39             ` Philip Oakley
  0 siblings, 1 reply; 107+ messages in thread
From: Junio C Hamano @ 2016-06-27 15:08 UTC (permalink / raw)
  To: Philip Oakley; +Cc: Jeff King, Git List

"Philip Oakley" <philipoakley@iee.org> writes:

> ..., I was wondering
> if an alternative would be to refer to it via [use the headings of]
> it's notation, i.e. "the 'two-dot' range notation" (or 'syntax' is
> that is preferred), and the "three-dot symmetric difference notation".

That's a lot more sensible pair of headings, I would think.

> The existing explanatory text can stand as is, but they would now have
> a section for readers to find.
>
> Or should I just drop this?

I like the approach to separate them into clearly marked sections.
I primarily was reacting to the "single-sided" which nobody would
understand.

^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: name for A..B ranges?
  2016-06-27 15:08           ` Junio C Hamano
@ 2016-06-27 15:39             ` Philip Oakley
  0 siblings, 0 replies; 107+ messages in thread
From: Philip Oakley @ 2016-06-27 15:39 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Jeff King, Git List

From: "Junio C Hamano" <gitster@pobox.com>
> "Philip Oakley" <philipoakley@iee.org> writes:
> 
>> ..., I was wondering
>> if an alternative would be to refer to it via [use the headings of]
>> it's notation, i.e. "the 'two-dot' range notation" (or 'syntax' is
>> that is preferred), and the "three-dot symmetric difference notation".
> 
> That's a lot more sensible pair of headings, I would think.
> 
>> The existing explanatory text can stand as is, but they would now have
>> a section for readers to find.
>>
>> Or should I just drop this?
> 
> I like the approach to separate them into clearly marked sections.
> I primarily was reacting to the "single-sided" which nobody would
> understand.
> --

Thanks, I'll update the patches (probably tomorrow)
Philip

^ permalink raw reply	[flat|nested] 107+ messages in thread

* [PATCH v2 0/4] Name for A..B ranges?
  2016-06-25 16:46       ` [PATCH 0/2] " Philip Oakley
                           ` (2 preceding siblings ...)
  2016-06-25 18:47         ` [PATCH] doc: show the actual left, right, and boundary marks Philip Oakley
@ 2016-06-30 20:25         ` Philip Oakley
  2016-06-30 20:25           ` [PATCH v2 1/4] doc: use 'symmetric difference' consistently Philip Oakley
                             ` (5 more replies)
  3 siblings, 6 replies; 107+ messages in thread
From: Philip Oakley @ 2016-06-30 20:25 UTC (permalink / raw)
  To: GitList; +Cc: Junio C Hamano, Jeff King

This is the re-roll of the po/range-doc (2016-06-27) 3 commits

The order is slightly re-arranged, and an additional patch clarifying
that ^r1 excludes r1 itself being added.

The heading have been tweaked.

Discussion: $gmane/297908
previous patch series $gmane/298223

Philip Oakley (4):
  doc: use 'symmetric difference' consistently
  doc: show the actual left, right, and boundary marks
  doc: give headings for the two and three dot notations
  doc: clarify that `^r1` will exclude `r1` itself

 Documentation/gitk.txt             |  2 +-
 Documentation/pretty-formats.txt   |  2 +-
 Documentation/rev-list-options.txt |  4 ++--
 Documentation/revisions.txt        | 25 ++++++++++++++++++-------
 4 files changed, 22 insertions(+), 11 deletions(-)

-- 
2.8.4.windows.1.3.ge328a54


^ permalink raw reply	[flat|nested] 107+ messages in thread

* [PATCH v2 1/4] doc: use 'symmetric difference' consistently
  2016-06-30 20:25         ` [PATCH v2 0/4] Name for A..B ranges? Philip Oakley
@ 2016-06-30 20:25           ` Philip Oakley
  2016-06-30 20:25           ` [PATCH v2 2/4] doc: show the actual left, right, and boundary marks Philip Oakley
                             ` (4 subsequent siblings)
  5 siblings, 0 replies; 107+ messages in thread
From: Philip Oakley @ 2016-06-30 20:25 UTC (permalink / raw)
  To: GitList; +Cc: Junio C Hamano, Jeff King

Signed-off-by: Philip Oakley <philipoakley@iee.org>
---
 Documentation/gitk.txt             | 2 +-
 Documentation/rev-list-options.txt | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/Documentation/gitk.txt b/Documentation/gitk.txt
index 6ade002..6c3eb15 100644
--- a/Documentation/gitk.txt
+++ b/Documentation/gitk.txt
@@ -70,7 +70,7 @@ linkgit:git-rev-list[1] for a complete list.
 
 --left-right::
 
-	Mark which side of a symmetric diff a commit is reachable
+	Mark which side of a symmetric difference a commit is reachable
 	from.  Commits from the left side are prefixed with a `<`
 	symbol and those from the right with a `>` symbol.
 
diff --git a/Documentation/rev-list-options.txt b/Documentation/rev-list-options.txt
index 4f009d4..6dc0bb0 100644
--- a/Documentation/rev-list-options.txt
+++ b/Documentation/rev-list-options.txt
@@ -225,7 +225,7 @@ excluded from the output.
 
 --left-only::
 --right-only::
-	List only commits on the respective side of a symmetric range,
+	List only commits on the respective side of a symmetric difference,
 	i.e. only those which would be marked `<` resp. `>` by
 	`--left-right`.
 +
@@ -766,7 +766,7 @@ ifdef::git-rev-list[]
 endif::git-rev-list[]
 
 --left-right::
-	Mark which side of a symmetric diff a commit is reachable from.
+	Mark which side of a symmetric difference a commit is reachable from.
 	Commits from the left side are prefixed with `<` and those from
 	the right with `>`.  If combined with `--boundary`, those
 	commits are prefixed with `-`.
-- 
2.8.4.windows.1.3.ge328a54


^ permalink raw reply related	[flat|nested] 107+ messages in thread

* [PATCH v2 2/4] doc: show the actual left, right, and boundary marks
  2016-06-30 20:25         ` [PATCH v2 0/4] Name for A..B ranges? Philip Oakley
  2016-06-30 20:25           ` [PATCH v2 1/4] doc: use 'symmetric difference' consistently Philip Oakley
@ 2016-06-30 20:25           ` Philip Oakley
  2016-06-30 20:25           ` [PATCH v2 3/4] doc: give headings for the two and three dot notations Philip Oakley
                             ` (3 subsequent siblings)
  5 siblings, 0 replies; 107+ messages in thread
From: Philip Oakley @ 2016-06-30 20:25 UTC (permalink / raw)
  To: GitList; +Cc: Junio C Hamano, Jeff King

Signed-off-by: Philip Oakley <philipoakley@iee.org>
---
Found while checking the 'symmetric difference' documentation
---
 Documentation/pretty-formats.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Documentation/pretty-formats.txt b/Documentation/pretty-formats.txt
index 29b19b9..10719e1 100644
--- a/Documentation/pretty-formats.txt
+++ b/Documentation/pretty-formats.txt
@@ -166,7 +166,7 @@ endif::git-rev-list[]
   respecting the `auto` settings of the former if we are going to a
   terminal). `auto` alone (i.e. `%C(auto)`) will turn on auto coloring
   on the next placeholders until the color is switched again.
-- '%m': left, right or boundary mark
+- '%m': left (`<`), right (`>`) or boundary (`-`) mark
 - '%n': newline
 - '%%': a raw '%'
 - '%x00': print a byte from a hex code
-- 
2.8.4.windows.1.3.ge328a54


^ permalink raw reply related	[flat|nested] 107+ messages in thread

* [PATCH v2 3/4] doc: give headings for the two and three dot notations
  2016-06-30 20:25         ` [PATCH v2 0/4] Name for A..B ranges? Philip Oakley
  2016-06-30 20:25           ` [PATCH v2 1/4] doc: use 'symmetric difference' consistently Philip Oakley
  2016-06-30 20:25           ` [PATCH v2 2/4] doc: show the actual left, right, and boundary marks Philip Oakley
@ 2016-06-30 20:25           ` Philip Oakley
  2016-06-30 20:25           ` [PATCH v2 4/4] doc: clarify that `^r1` will exclude `r1` itself Philip Oakley
                             ` (2 subsequent siblings)
  5 siblings, 0 replies; 107+ messages in thread
From: Philip Oakley @ 2016-06-30 20:25 UTC (permalink / raw)
  To: GitList; +Cc: Junio C Hamano, Jeff King

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 19314e3..131060c 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'.
 
-This set operation appears so often that there is a shorthand
+The '..' (two-dot) range notation
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+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' or 'r2' 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.
 
+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.
 
-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
+----------------------
 
 '<rev>'::
 	Include commits that are reachable from (i.e. ancestors of)
-- 
2.8.4.windows.1.3.ge328a54


^ permalink raw reply related	[flat|nested] 107+ messages in thread

* [PATCH v2 4/4] doc: clarify that `^r1` will exclude `r1` itself
  2016-06-30 20:25         ` [PATCH v2 0/4] Name for A..B ranges? Philip Oakley
                             ` (2 preceding siblings ...)
  2016-06-30 20:25           ` [PATCH v2 3/4] doc: give headings for the two and three dot notations Philip Oakley
@ 2016-06-30 20:25           ` Philip Oakley
  2016-07-01 21:16             ` Junio C Hamano
  2016-07-01 21:27           ` [PATCH v2 0/4] Name for A..B ranges? Junio C Hamano
  2016-07-11 20:25           ` [PATCH v3 0/8] " Philip Oakley
  5 siblings, 1 reply; 107+ messages in thread
From: Philip Oakley @ 2016-06-30 20:25 UTC (permalink / raw)
  To: GitList; +Cc: Junio C Hamano, Jeff King

Signed-off-by: Philip Oakley <philipoakley@iee.org>
---
 Documentation/revisions.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt
index 131060c..87be9c4 100644
--- a/Documentation/revisions.txt
+++ b/Documentation/revisions.txt
@@ -246,7 +246,7 @@ 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'.
+from 'r2' but exclude 'r1' and those reachable from 'r1'.
 
 The '..' (two-dot) range notation
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- 
2.8.4.windows.1.3.ge328a54


^ permalink raw reply related	[flat|nested] 107+ messages in thread

* Re: [PATCH v2 4/4] doc: clarify that `^r1` will exclude `r1` itself
  2016-06-30 20:25           ` [PATCH v2 4/4] doc: clarify that `^r1` will exclude `r1` itself Philip Oakley
@ 2016-07-01 21:16             ` Junio C Hamano
  2016-07-01 22:08               ` Philip Oakley
  0 siblings, 1 reply; 107+ messages in thread
From: Junio C Hamano @ 2016-07-01 21:16 UTC (permalink / raw)
  To: Philip Oakley; +Cc: GitList, Jeff King

Philip Oakley <philipoakley@iee.org> writes:

> Signed-off-by: Philip Oakley <philipoakley@iee.org>
> ---
>  Documentation/revisions.txt | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt
> index 131060c..87be9c4 100644
> --- a/Documentation/revisions.txt
> +++ b/Documentation/revisions.txt
> @@ -246,7 +246,7 @@ 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'.
> +from 'r2' but exclude 'r1' and those reachable from 'r1'.

Well, if you have to spell that out, you'd want to spell out r2 side
too, no?  That is,

	... means commits 'r2' and those reachable from 'r2', but
	exclude 'r1' and those reachable from 'r1'.

The (sub)document has 16 grep hits of "reach(able)"; a reader who
needs this clarification would need all of them clarified, but
repeating "X and those reachable from X" everywhere is not a good
way to do so.  Perhaps a separate sentence upfront that defines what
"reachable" means is a better solution, no?

Something like the attached patch may be a good starting point, but
this leaves two forward-references of reachable in the part that
describes ways to specify a single object (e.g. find a commit with
this string that is reachable by X) we may need to address, perhaps
by adding "(see below)" or something.


 Documentation/revisions.txt | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt
index 19314e3..34642b9 100644
--- a/Documentation/revisions.txt
+++ b/Documentation/revisions.txt
@@ -242,6 +242,10 @@ 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.
 
+A commit Y is said to be reachable from commit X if Y is X, or if Y
+is reachable from any any of X's parents.  We also say "Y is an
+ancestor of X" in such a case.
+
 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'.



^ permalink raw reply related	[flat|nested] 107+ messages in thread

* Re: [PATCH v2 0/4] Name for A..B ranges?
  2016-06-30 20:25         ` [PATCH v2 0/4] Name for A..B ranges? Philip Oakley
                             ` (3 preceding siblings ...)
  2016-06-30 20:25           ` [PATCH v2 4/4] doc: clarify that `^r1` will exclude `r1` itself Philip Oakley
@ 2016-07-01 21:27           ` Junio C Hamano
  2016-07-11 20:25           ` [PATCH v3 0/8] " Philip Oakley
  5 siblings, 0 replies; 107+ messages in thread
From: Junio C Hamano @ 2016-07-01 21:27 UTC (permalink / raw)
  To: Philip Oakley; +Cc: GitList, Jeff King

Philip Oakley <philipoakley@iee.org> writes:

> This is the re-roll of the po/range-doc (2016-06-27) 3 commits
>
> The order is slightly re-arranged, and an additional patch clarifying
> that ^r1 excludes r1 itself being added.
>
> The heading have been tweaked.

Thanks.

I think 1-3 are ready for 'next'.  4/4 may need a bit more
thinking.


^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: [PATCH v2 4/4] doc: clarify that `^r1` will exclude `r1` itself
  2016-07-01 21:16             ` Junio C Hamano
@ 2016-07-01 22:08               ` Philip Oakley
  2016-07-01 22:14                 ` Junio C Hamano
  0 siblings, 1 reply; 107+ messages in thread
From: Philip Oakley @ 2016-07-01 22:08 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: GitList, Jeff King

From: "Junio C Hamano" <gitster@pobox.com>
> Philip Oakley <philipoakley@iee.org> writes:
>
>> Signed-off-by: Philip Oakley <philipoakley@iee.org>
>> ---
>>  Documentation/revisions.txt | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt
>> index 131060c..87be9c4 100644
>> --- a/Documentation/revisions.txt
>> +++ b/Documentation/revisions.txt
>> @@ -246,7 +246,7 @@ 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'.
>> +from 'r2' but exclude 'r1' and those reachable from 'r1'.
>
> Well, if you have to spell that out, you'd want to spell out r2 side
> too, no?  That is,

The clarification wasn't about what "reachable" means but about inclusivity,
such as whether 0..4 would give 0,1,2,3,4 or would be 'off by one' and only
give 1,2,3,4. And in this case it's the latter.

Describing 'reachability' is a whole different kettle of fish, as you
highlight below, and would be separate from this patch.

I've certainly tripped up in the past over using an appropriate reachability
definition in r1..r2, and forgetting (*) about remote branches being in the
local graph . (*- i.e. not really understanding!)

--
Philip
(only occasional access to internet over next few days)
>
> ... means commits 'r2' and those reachable from 'r2', but
> exclude 'r1' and those reachable from 'r1'.
>
> The (sub)document has 16 grep hits of "reach(able)"; a reader who
> needs this clarification would need all of them clarified, but
> repeating "X and those reachable from X" everywhere is not a good
> way to do so.  Perhaps a separate sentence upfront that defines what
> "reachable" means is a better solution, no?
>
> Something like the attached patch may be a good starting point, but
> this leaves two forward-references of reachable in the part that
> describes ways to specify a single object (e.g. find a commit with
> this string that is reachable by X) we may need to address, perhaps
> by adding "(see below)" or something.
>
>
> Documentation/revisions.txt | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt
> index 19314e3..34642b9 100644
> --- a/Documentation/revisions.txt
> +++ b/Documentation/revisions.txt
> @@ -242,6 +242,10 @@ 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.
>
> +A commit Y is said to be reachable from commit X if Y is X, or if Y
> +is reachable from any any of X's parents.  We also say "Y is an
> +ancestor of X" in such a case.
> +
> 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'.
>
> 


^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: [PATCH v2 4/4] doc: clarify that `^r1` will exclude `r1` itself
  2016-07-01 22:08               ` Philip Oakley
@ 2016-07-01 22:14                 ` Junio C Hamano
  2016-07-01 23:01                   ` Junio C Hamano
  0 siblings, 1 reply; 107+ messages in thread
From: Junio C Hamano @ 2016-07-01 22:14 UTC (permalink / raw)
  To: Philip Oakley; +Cc: GitList, Jeff King

On Fri, Jul 1, 2016 at 3:08 PM, Philip Oakley <philipoakley@iee.org> wrote:
>>>  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>>  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'.
>>> +from 'r2' but exclude 'r1' and those reachable from 'r1'.
>>
>> Well, if you have to spell that out, you'd want to spell out r2 side
>> too, no?  That is,
>
> The clarification wasn't about what "reachable" means but about inclusivity,
> such as whether 0..4 would give 0,1,2,3,4 or would be 'off by one' and only
> give 1,2,3,4. And in this case it's the latter.

Well, you have the same inclusivity issue on the opposite end, no? Is 0..4
a range with 0,1,2,3,4? 0,1,2,3? 1,2,3,4? or 1,2,3?

> Describing 'reachability' is a whole different kettle of fish, as you
> highlight below, and would be separate from this patch.

I am not sure I agree. It all is about "is the endpoint included or not?".

^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: [PATCH v2 4/4] doc: clarify that `^r1` will exclude `r1` itself
  2016-07-01 22:14                 ` Junio C Hamano
@ 2016-07-01 23:01                   ` Junio C Hamano
  2016-07-10 21:17                     ` Philip Oakley
  0 siblings, 1 reply; 107+ messages in thread
From: Junio C Hamano @ 2016-07-01 23:01 UTC (permalink / raw)
  To: Philip Oakley; +Cc: GitList, Jeff King

Junio C Hamano <gitster@pobox.com> writes:

> On Fri, Jul 1, 2016 at 3:08 PM, Philip Oakley <philipoakley@iee.org> wrote:
>>>>  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>>>  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'.
>>>> +from 'r2' but exclude 'r1' and those reachable from 'r1'.
>>>
>>> Well, if you have to spell that out, you'd want to spell out r2 side
>>> too, no?  That is,
>>
>> The clarification wasn't about what "reachable" means but about inclusivity,
>> such as whether 0..4 would give 0,1,2,3,4 or would be 'off by one' and only
>> give 1,2,3,4. And in this case it's the latter.
>
> Well, you have the same inclusivity issue on the opposite end, no? Is 0..4
> a range with 0,1,2,3,4? 0,1,2,3? 1,2,3,4? or 1,2,3?
>
>> Describing 'reachability' is a whole different kettle of fish, as you
>> highlight below, and would be separate from this patch.
>
> I am not sure I agree. It all is about "is the endpoint included or not?".

This did not come out as illustrating as I hoped.  Let's put it
differently.

I think this is all about how "reachable" is defined.  "Am I an
ancestor of myself?" is the question.

If "all commits reachable from r1" includes 'r1', then, it is clear
that "... but exclude those reachable from 'r1'" means 'r1' is not
part of the resulting set.

If I were not an ancestor of me, on the other hand, "... but exclude
those who are ancestors of 'r1'" would not exclude 'r1'.  If 'r1' is
reachable from 'r2', then 'r1' would be in the resulting set.

The same thing happens at the opposite end of the "range".  If I am
an ancestor of me, then "all commits reachable from 'r2'" does
inculde 'r2'; if I am not an ancestor of me, 'r2' is not part of the
resulting set.

	Note.  I said "range" in quotes, because this is not like
	drawing a straight line and placing two points to denote the
	lower and the upper bounds of the "range".  What Git does is
	a set operation, "r2 ^r1" excludes what is reachable from r1
        from the set of commits that are reachable from r2.

By choosing the definition of "reachable" consistently, 0..4 can
mean either 1,2,3,4 (I am reachable from myself) or 0,1,2,3 (I can
not be reached by me), and in order to clarify that we give 1,2,3,4
and not 0,1,2,3, we still need to clearly define what "reachable"
means.

But any other interpretation, e.g. 0,1,2,3,4, is incoherent.

^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: [PATCH v2 4/4] doc: clarify that `^r1` will exclude `r1` itself
  2016-07-01 23:01                   ` Junio C Hamano
@ 2016-07-10 21:17                     ` Philip Oakley
  0 siblings, 0 replies; 107+ messages in thread
From: Philip Oakley @ 2016-07-10 21:17 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: GitList, Jeff King

From: "Junio C Hamano" <gitster@pobox.com> : Saturday, July 02, 2016 12:01 
AM
> Junio C Hamano <gitster@pobox.com> writes:
>
>> On Fri, Jul 1, 2016 at 3:08 PM, Philip Oakley <philipoakley@iee.org> 
>> wrote:
>>>>>  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>>>>  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'.
>>>>> +from 'r2' but exclude 'r1' and those reachable from 'r1'.
Hi Junio
Sorry for the delay in response, I'd been away and had some catch up to do.

I think we may have dropped into a YXproblem.

My particular concern was the literary conflict between the implicit 
'inclusive' aspects and the explicit 'exclusive' parts of the descriptions, 
a sort of barber shaving problem [1], especially when used in conjunction 
with the negation.

It's the potential for reader confusion at that point (particularly for a 
string of pearls case) I was trying to address. However, you are right that 
'reachable' also isn't as well defined as it might be.

For example, in a DAG, we should have no cycles where directed edges lead 
can back to their start point, yet (for reachability discussions) we want to 
imply an extra loopback edge, all of which is part of the sloppiness of 
natural languages.

This potential for confusion is further shown in the summary where both 
<rev> and ^<rev> say "(i.e. ancestors of)"!

In summary, I think that both the definition of reachability needs 
clarifying, and that c0ffee..deadbeef excludes any serving of c0ffee, even 
for a line of pearls, should be covered.

>>>>
>>>> Well, if you have to spell that out, you'd want to spell out r2 side
>>>> too, no?  That is,
>>>
>>> The clarification wasn't about what "reachable" means but about 
>>> inclusivity,
>>> such as whether 0..4 would give 0,1,2,3,4 or would be 'off by one' and 
>>> only
>>> give 1,2,3,4. And in this case it's the latter.
>>
>> Well, you have the same inclusivity issue on the opposite end, no? Is 
>> 0..4
>> a range with 0,1,2,3,4? 0,1,2,3? 1,2,3,4? or 1,2,3?

In most natural language we have 0:4 is 0,1,2,3,4 so the exclusion of 0 
would be the one to note.

>>
>>> Describing 'reachability' is a whole different kettle of fish, as you
>>> highlight below, and would be separate from this patch.
see below.

>>
>> I am not sure I agree. It all is about "is the endpoint included or 
>> not?".
>
> This did not come out as illustrating as I hoped.  Let's put it
> differently.
>
> I think this is all about how "reachable" is defined.  "Am I an
> ancestor of myself?" is the question.

I don't think that just clarifying "reachability" would be sufficient. 
Necessary yes, sufficient no.

>
> If "all commits reachable from r1" includes 'r1', then, it is clear
> that "... but exclude those reachable from 'r1'" means 'r1' is not
> part of the resulting set.
>
> If I were not an ancestor of me, on the other hand, "... but exclude
> those who are ancestors of 'r1'" would not exclude 'r1'.  If 'r1' is
> reachable from 'r2', then 'r1' would be in the resulting set.
>
> The same thing happens at the opposite end of the "range".  If I am
> an ancestor of me, then "all commits reachable from 'r2'" does
> inculde 'r2'; if I am not an ancestor of me, 'r2' is not part of the
> resulting set.
>

> Note.
> I said "range" in quotes, because this is not like
> drawing a straight line and placing two points to denote the
> lower and the upper bounds of the "range".  What Git does is
> a set operation, "r2 ^r1" excludes what is reachable from r1
>        from the set of commits that are reachable from r2.

The understanding of this "Y" branching "range" is the part that was the 
'whole new kettle of fish' for me, especially with the rtbs, that caught me 
out during early contributions.


>
> By choosing the definition of "reachable" consistently, 0..4 can
> mean either 1,2,3,4 (I am reachable from myself) or 0,1,2,3 (I can
> not be reached by me), and in order to clarify that we give 1,2,3,4
> and not 0,1,2,3, we still need to clearly define what "reachable"
> means.

I'll re-think the patch (4/4) to cover thse issue.

>
> But any other interpretation, e.g. 0,1,2,3,4, is incoherent.
> --
Philip

[1] https://en.wikipedia.org/wiki/Barber_paradox 


^ permalink raw reply	[flat|nested] 107+ messages in thread

* [PATCH v3 0/8] Name for A..B ranges?
  2016-06-30 20:25         ` [PATCH v2 0/4] Name for A..B ranges? Philip Oakley
                             ` (4 preceding siblings ...)
  2016-07-01 21:27           ` [PATCH v2 0/4] Name for A..B ranges? Junio C Hamano
@ 2016-07-11 20:25           ` Philip Oakley
  2016-07-11 20:25             ` [PATCH v3 1/8] doc: use 'symmetric difference' consistently Philip Oakley
                               ` (9 more replies)
  5 siblings, 10 replies; 107+ messages in thread
From: Philip Oakley @ 2016-07-11 20:25 UTC (permalink / raw)
  To: GitList; +Cc: Junio C Hamano, Jeff King

This is the re-roll of the po/range-doc (2016-07-01) 3 commits and its
follow on patch.

The series has gained additional patches following the discussions
($gmane/298790).

The original first 3 patches are unchanged, though 2/8 has been inserted
to name the Left and Right ranges.

The extra four patches carefully tease out the clarification of
reachability. Reachability is defined relative the ancestry chain thus
(hopefully) avoiding misunderstandings.

The final patch updates the summary examples, and the tricky (for the
untutored reader) two dots case of a linear development where r1..r2
excludes r1 itself.

The patches can be squashed together if required.

Original discussion starts at: $gmane/297908
V1 patch series $gmane/298223
V2 patch series $gmane/298689


Philip Oakley (8):
  doc: use 'symmetric difference' consistently
  doc: revisions - name the Left and Right sides
  doc: show the actual left, right, and boundary marks
  doc: give headings for the two and three dot notations
  doc: gitrevisions - use 'reachable' in page description
  doc: gitrevisions - clarify 'latter case' is revision walk
  doc: revisions  - define `reachable`
  doc: revisions - clarify reachability examples

 Documentation/gitk.txt             |  2 +-
 Documentation/gitrevisions.txt     |  6 ++---
 Documentation/pretty-formats.txt   |  2 +-
 Documentation/rev-list-options.txt |  4 +--
 Documentation/revisions.txt        | 50 ++++++++++++++++++++++++++------------
 5 files changed, 41 insertions(+), 23 deletions(-)

-- 
2.8.4.windows.1.3.ge328a54

follows from msg-ID <20160630202509.4472-1-philipoakley@iee.org>

^ permalink raw reply	[flat|nested] 107+ messages in thread

* [PATCH v3 1/8] doc: use 'symmetric difference' consistently
  2016-07-11 20:25           ` [PATCH v3 0/8] " Philip Oakley
@ 2016-07-11 20:25             ` Philip Oakley
  2016-07-11 20:25             ` [PATCH v3 2/8] doc: revisions - name the Left and Right sides Philip Oakley
                               ` (8 subsequent siblings)
  9 siblings, 0 replies; 107+ messages in thread
From: Philip Oakley @ 2016-07-11 20:25 UTC (permalink / raw)
  To: GitList; +Cc: Junio C Hamano, Jeff King

Signed-off-by: Philip Oakley <philipoakley@iee.org>
---
 Documentation/gitk.txt             | 2 +-
 Documentation/rev-list-options.txt | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/Documentation/gitk.txt b/Documentation/gitk.txt
index 6ade002..6c3eb15 100644
--- a/Documentation/gitk.txt
+++ b/Documentation/gitk.txt
@@ -70,7 +70,7 @@ linkgit:git-rev-list[1] for a complete list.
 
 --left-right::
 
-	Mark which side of a symmetric diff a commit is reachable
+	Mark which side of a symmetric difference a commit is reachable
 	from.  Commits from the left side are prefixed with a `<`
 	symbol and those from the right with a `>` symbol.
 
diff --git a/Documentation/rev-list-options.txt b/Documentation/rev-list-options.txt
index 4f009d4..6dc0bb0 100644
--- a/Documentation/rev-list-options.txt
+++ b/Documentation/rev-list-options.txt
@@ -225,7 +225,7 @@ excluded from the output.
 
 --left-only::
 --right-only::
-	List only commits on the respective side of a symmetric range,
+	List only commits on the respective side of a symmetric difference,
 	i.e. only those which would be marked `<` resp. `>` by
 	`--left-right`.
 +
@@ -766,7 +766,7 @@ ifdef::git-rev-list[]
 endif::git-rev-list[]
 
 --left-right::
-	Mark which side of a symmetric diff a commit is reachable from.
+	Mark which side of a symmetric difference a commit is reachable from.
 	Commits from the left side are prefixed with `<` and those from
 	the right with `>`.  If combined with `--boundary`, those
 	commits are prefixed with `-`.
-- 
2.8.4.windows.1.3.ge328a54


^ permalink raw reply related	[flat|nested] 107+ messages in thread

* [PATCH v3 2/8] doc: revisions - name the Left and Right sides
  2016-07-11 20:25           ` [PATCH v3 0/8] " Philip Oakley
  2016-07-11 20:25             ` [PATCH v3 1/8] doc: use 'symmetric difference' consistently Philip Oakley
@ 2016-07-11 20:25             ` Philip Oakley
  2016-07-12 16:47               ` Junio C Hamano
  2016-07-11 20:25             ` [PATCH v3 3/8] doc: show the actual left, right, and boundary marks Philip Oakley
                               ` (7 subsequent siblings)
  9 siblings, 1 reply; 107+ messages in thread
From: Philip Oakley @ 2016-07-11 20:25 UTC (permalink / raw)
  To: GitList; +Cc: Junio C Hamano, Jeff King

The terms Left and Right side originate from the symmetric
difference. Name them there.
---
 Documentation/revisions.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt
index 19314e3..79f6d03 100644
--- a/Documentation/revisions.txt
+++ b/Documentation/revisions.txt
@@ -256,7 +256,7 @@ 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' or 'r2' but not from both.
+'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.
 For example, 'origin..' is a shorthand for 'origin..HEAD' and asks "What
-- 
2.8.4.windows.1.3.ge328a54


^ permalink raw reply related	[flat|nested] 107+ messages in thread

* [PATCH v3 3/8] doc: show the actual left, right, and boundary marks
  2016-07-11 20:25           ` [PATCH v3 0/8] " Philip Oakley
  2016-07-11 20:25             ` [PATCH v3 1/8] doc: use 'symmetric difference' consistently Philip Oakley
  2016-07-11 20:25             ` [PATCH v3 2/8] doc: revisions - name the Left and Right sides Philip Oakley
@ 2016-07-11 20:25             ` Philip Oakley
  2016-07-11 20:25             ` [PATCH v3 4/8] doc: give headings for the two and three dot notations Philip Oakley
                               ` (6 subsequent siblings)
  9 siblings, 0 replies; 107+ messages in thread
From: Philip Oakley @ 2016-07-11 20:25 UTC (permalink / raw)
  To: GitList; +Cc: Junio C Hamano, Jeff King

Signed-off-by: Philip Oakley <philipoakley@iee.org>
---
Found while checking the 'symmetric difference' documentation
---
 Documentation/pretty-formats.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Documentation/pretty-formats.txt b/Documentation/pretty-formats.txt
index 29b19b9..10719e1 100644
--- a/Documentation/pretty-formats.txt
+++ b/Documentation/pretty-formats.txt
@@ -166,7 +166,7 @@ endif::git-rev-list[]
   respecting the `auto` settings of the former if we are going to a
   terminal). `auto` alone (i.e. `%C(auto)`) will turn on auto coloring
   on the next placeholders until the color is switched again.
-- '%m': left, right or boundary mark
+- '%m': left (`<`), right (`>`) or boundary (`-`) mark
 - '%n': newline
 - '%%': a raw '%'
 - '%x00': print a byte from a hex code
-- 
2.8.4.windows.1.3.ge328a54


^ permalink raw reply related	[flat|nested] 107+ messages in thread

* [PATCH v3 4/8] doc: give headings for the two and three dot notations
  2016-07-11 20:25           ` [PATCH v3 0/8] " Philip Oakley
                               ` (2 preceding siblings ...)
  2016-07-11 20:25             ` [PATCH v3 3/8] doc: show the actual left, right, and boundary marks Philip Oakley
@ 2016-07-11 20:25             ` Philip Oakley
  2016-07-12 13:44               ` Marc Branchaud
  2016-07-11 20:25             ` [PATCH v3 5/8] doc: gitrevisions - use 'reachable' in page description Philip Oakley
                               ` (5 subsequent siblings)
  9 siblings, 1 reply; 107+ messages in thread
From: Philip Oakley @ 2016-07-11 20:25 UTC (permalink / raw)
  To: GitList; +Cc: Junio C Hamano, Jeff King

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'.
 
-This set operation appears so often that there is a shorthand
+The '..' (two-dot) range notation
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+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.
 
+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.
 
-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
+----------------------
 
 '<rev>'::
 	Include commits that are reachable from (i.e. ancestors of)
-- 
2.8.4.windows.1.3.ge328a54


^ permalink raw reply related	[flat|nested] 107+ messages in thread

* [PATCH v3 5/8] doc: gitrevisions - use 'reachable' in page description
  2016-07-11 20:25           ` [PATCH v3 0/8] " Philip Oakley
                               ` (3 preceding siblings ...)
  2016-07-11 20:25             ` [PATCH v3 4/8] doc: give headings for the two and three dot notations Philip Oakley
@ 2016-07-11 20:25             ` Philip Oakley
  2016-07-11 20:25             ` [PATCH v3 6/8] doc: gitrevisions - clarify 'latter case' is revision walk Philip Oakley
                               ` (4 subsequent siblings)
  9 siblings, 0 replies; 107+ messages in thread
From: Philip Oakley @ 2016-07-11 20:25 UTC (permalink / raw)
  To: GitList; +Cc: Junio C Hamano, Jeff King

Signed-off-by: Philip Oakley <philipoakley@iee.org>
---
 Documentation/gitrevisions.txt | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Documentation/gitrevisions.txt b/Documentation/gitrevisions.txt
index e903eb7..33039c6 100644
--- a/Documentation/gitrevisions.txt
+++ b/Documentation/gitrevisions.txt
@@ -15,8 +15,8 @@ DESCRIPTION
 
 Many Git commands take revision parameters as arguments. Depending on
 the command, they denote a specific commit or, for commands which
-walk the revision graph (such as linkgit:git-log[1]), all commits which can
-be reached from that commit. In the latter case one can also specify a
+walk the revision graph (such as linkgit:git-log[1]), all commits which are
+reachable from that commit. In the latter case one can also specify a
 range of revisions explicitly.
 
 In addition, some Git commands (such as linkgit:git-show[1]) also take
-- 
2.8.4.windows.1.3.ge328a54


^ permalink raw reply related	[flat|nested] 107+ messages in thread

* [PATCH v3 6/8] doc: gitrevisions - clarify 'latter case' is revision walk
  2016-07-11 20:25           ` [PATCH v3 0/8] " Philip Oakley
                               ` (4 preceding siblings ...)
  2016-07-11 20:25             ` [PATCH v3 5/8] doc: gitrevisions - use 'reachable' in page description Philip Oakley
@ 2016-07-11 20:25             ` Philip Oakley
  2016-07-11 20:25             ` [PATCH v3 7/8] doc: revisions - define `reachable` Philip Oakley
                               ` (3 subsequent siblings)
  9 siblings, 0 replies; 107+ messages in thread
From: Philip Oakley @ 2016-07-11 20:25 UTC (permalink / raw)
  To: GitList; +Cc: Junio C Hamano, Jeff King

The prior sentence has too many clauses for easy parsing.
Replace 'the latter case' with a direct quote.

Signed-off-by: Philip Oakley <philipoakley@iee.org>
---
 Documentation/gitrevisions.txt | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Documentation/gitrevisions.txt b/Documentation/gitrevisions.txt
index 33039c6..27dec5b 100644
--- a/Documentation/gitrevisions.txt
+++ b/Documentation/gitrevisions.txt
@@ -16,8 +16,8 @@ DESCRIPTION
 Many Git commands take revision parameters as arguments. Depending on
 the command, they denote a specific commit or, for commands which
 walk the revision graph (such as linkgit:git-log[1]), all commits which are
-reachable from that commit. In the latter case one can also specify a
-range of revisions explicitly.
+reachable from that commit. For commands that walk the revision graph one can
+also specify a range of revisions explicitly.
 
 In addition, some Git commands (such as linkgit:git-show[1]) also take
 revision parameters which denote other objects than commits, e.g. blobs
-- 
2.8.4.windows.1.3.ge328a54


^ permalink raw reply related	[flat|nested] 107+ messages in thread

* [PATCH v3 7/8] doc: revisions  - define `reachable`
  2016-07-11 20:25           ` [PATCH v3 0/8] " Philip Oakley
                               ` (5 preceding siblings ...)
  2016-07-11 20:25             ` [PATCH v3 6/8] doc: gitrevisions - clarify 'latter case' is revision walk Philip Oakley
@ 2016-07-11 20:25             ` Philip Oakley
  2016-07-12 13:48               ` Marc Branchaud
  2016-07-11 20:25             ` [PATCH v3 8/8] doc: revisions - clarify reachability examples Philip Oakley
                               ` (2 subsequent siblings)
  9 siblings, 1 reply; 107+ messages in thread
From: Philip Oakley @ 2016-07-11 20:25 UTC (permalink / raw)
  To: GitList; +Cc: Junio C Hamano, Jeff King

Do not self-define `reachable`, which can lead to misunderstanding.
Instead define `reachability` explictly.

Signed-off-by: Philip Oakley <philipoakley@iee.org>
---
 Documentation/revisions.txt | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt
index 1c59e87..a3cd28b 100644
--- a/Documentation/revisions.txt
+++ b/Documentation/revisions.txt
@@ -237,10 +237,16 @@ SPECIFYING RANGES
 -----------------
 
 History traversing commands such as `git log` operate on a set
-of commits, not just a single commit.  To these commands,
-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.
+of commits, not just a single commit.
+
+For these commands,
+specifying a single revision, using the notation described in the
+previous section, means the `reachable` set of commits of the given
+commit.
+
+A commit's reachable set is the commit itself and the commits of
+its ancestry chain.
+
 
 The '{caret}' (caret) notation
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- 
2.8.4.windows.1.3.ge328a54


^ permalink raw reply related	[flat|nested] 107+ messages in thread

* [PATCH v3 8/8] doc: revisions - clarify reachability examples
  2016-07-11 20:25           ` [PATCH v3 0/8] " Philip Oakley
                               ` (6 preceding siblings ...)
  2016-07-11 20:25             ` [PATCH v3 7/8] doc: revisions - define `reachable` Philip Oakley
@ 2016-07-11 20:25             ` Philip Oakley
  2016-07-12 19:29             ` [PATCH v3 0/8] Name for A..B ranges? Junio C Hamano
  2016-07-20 21:09             ` [PATCH v4 " Philip Oakley
  9 siblings, 0 replies; 107+ messages in thread
From: Philip Oakley @ 2016-07-11 20:25 UTC (permalink / raw)
  To: GitList; +Cc: Junio C Hamano, Jeff King

For the r1..r2 case, the exclusion of r1, rather than inclusion of r2,
would be the unexpected case in natural language for a simple linear
development, i.e. start..end excludes start.

Signed-off-by: Philip Oakley <philipoakley@iee.org>
---
 Documentation/revisions.txt | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt
index a3cd28b..dba4fc6 100644
--- a/Documentation/revisions.txt
+++ b/Documentation/revisions.txt
@@ -252,7 +252,8 @@ 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'.
+from 'r2' but exclude those reachable from 'r1' (i.e. 'r1' and its
+ancestors).
 
 The '..' (two-dot) range notation
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -290,12 +291,12 @@ Revision Range Summary
 ----------------------
 
 '<rev>'::
-	Include commits that are reachable from (i.e. ancestors of)
-	<rev>.
+	Include commits that are reachable from <rev> (i.e. <rev> and its
+	ancestors).
 
 '{caret}<rev>'::
-	Exclude commits that are reachable from (i.e. ancestors of)
-	<rev>.
+	Exclude commits that are reachable from <rev> (i.e. <rev> and its
+	ancestors).
 
 '<rev1>..<rev2>'::
 	Include commits that are reachable from <rev2> but exclude
-- 
2.8.4.windows.1.3.ge328a54


^ permalink raw reply related	[flat|nested] 107+ messages in thread

* Re: [PATCH v3 4/8] doc: give headings for the two and three dot notations
  2016-07-11 20:25             ` [PATCH v3 4/8] doc: give headings for the two and three dot notations Philip Oakley
@ 2016-07-12 13:44               ` Marc Branchaud
  2016-07-12 17:04                 ` Junio C Hamano
  2016-07-12 21:41                 ` Philip Oakley
  0 siblings, 2 replies; 107+ messages in thread
From: Marc Branchaud @ 2016-07-12 13:44 UTC (permalink / raw)
  To: Philip Oakley, GitList; +Cc: Junio C Hamano, Jeff King

On 2016-07-11 04:25 PM, Philip Oakley wrote:
> 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?

> +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.

>
> +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.

>
> -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.


^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: [PATCH v3 7/8] doc: revisions - define `reachable`
  2016-07-11 20:25             ` [PATCH v3 7/8] doc: revisions - define `reachable` Philip Oakley
@ 2016-07-12 13:48               ` Marc Branchaud
  2016-07-12 21:44                 ` Philip Oakley
  0 siblings, 1 reply; 107+ messages in thread
From: Marc Branchaud @ 2016-07-12 13:48 UTC (permalink / raw)
  To: Philip Oakley, GitList; +Cc: Junio C Hamano, Jeff King

On 2016-07-11 04:25 PM, Philip Oakley wrote:
> Do not self-define `reachable`, which can lead to misunderstanding.
> Instead define `reachability` explictly.
>
> Signed-off-by: Philip Oakley <philipoakley@iee.org>
> ---
>   Documentation/revisions.txt | 14 ++++++++++----
>   1 file changed, 10 insertions(+), 4 deletions(-)
>
> diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt
> index 1c59e87..a3cd28b 100644
> --- a/Documentation/revisions.txt
> +++ b/Documentation/revisions.txt
> @@ -237,10 +237,16 @@ SPECIFYING RANGES
>   -----------------
>
>   History traversing commands such as `git log` operate on a set
> -of commits, not just a single commit.  To these commands,
> -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.
> +of commits, not just a single commit.
> +
> +For these commands,
> +specifying a single revision, using the notation described in the
> +previous section, means the `reachable` set of commits of the given
> +commit.

Better as "... means the set of commits `reachable` from the given commit."

> +
> +A commit's reachable set is the commit itself and the commits of
> +its ancestry chain.
> +

s/of/in/

		M.


^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: [PATCH v3 2/8] doc: revisions - name the Left and Right sides
  2016-07-11 20:25             ` [PATCH v3 2/8] doc: revisions - name the Left and Right sides Philip Oakley
@ 2016-07-12 16:47               ` Junio C Hamano
  2016-07-12 21:47                 ` Philip Oakley
  0 siblings, 1 reply; 107+ messages in thread
From: Junio C Hamano @ 2016-07-12 16:47 UTC (permalink / raw)
  To: Philip Oakley; +Cc: GitList, Jeff King

Philip Oakley <philipoakley@iee.org> writes:

> The terms Left and Right side originate from the symmetric
> difference. Name them there.
> ---

Sign-off?

>  Documentation/revisions.txt | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt
> index 19314e3..79f6d03 100644
> --- a/Documentation/revisions.txt
> +++ b/Documentation/revisions.txt
> @@ -256,7 +256,7 @@ 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' or 'r2' but not from both.
> +'r1' (Left side) or 'r2' (Right side) but not from both.

I think it is a good idea to call them explicitly left and right,
but I do not think they need to be capitalized here or on the title
of the patch.

>  In these two shorthands, you can omit one end and let it default to HEAD.
>  For example, 'origin..' is a shorthand for 'origin..HEAD' and asks "What

^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: [PATCH v3 4/8] doc: give headings for the two and three dot notations
  2016-07-12 13:44               ` Marc Branchaud
@ 2016-07-12 17:04                 ` Junio C Hamano
  2016-07-12 22:11                   ` Philip Oakley
  2016-07-12 21:41                 ` Philip Oakley
  1 sibling, 1 reply; 107+ messages in thread
From: Junio C Hamano @ 2016-07-12 17:04 UTC (permalink / raw)
  To: Marc Branchaud; +Cc: Philip Oakley, GitList, Jeff King

Marc Branchaud <marcnarc@xiplink.com> writes:

>> +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"?

Thanks for pointing out the potential confusion between ^X (exclude
reachable), and X^ (the first parent).  Commit exclusion is probably
a good heading.

>> -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?
>> ...
>> +The '...' (three dot) Symmetric Difference notation

This uses a strange capitalization rule.  s/notation/Notation/
perhaps?  The same comment for "Additional Shothand notation" below.

>> +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>   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.

An alternative would be to have

    - Dotted range notations
      - Two-dot notation
      - Three-dot notation

which would help make it stand out that defaulting is common
characteristics between .. and ... notations.  But I can imagine
that your "with slight duplication" variant below would work well,
too.

> 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.

>> +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.

I actually think this is a good place to have them described.
<rev>^<number> is about specifying a single commit.  These two are
not that (you can say HEAD^2^@ but you cannot say HEAD^@^2, for
example).


^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: [PATCH v3 0/8] Name for A..B ranges?
  2016-07-11 20:25           ` [PATCH v3 0/8] " Philip Oakley
                               ` (7 preceding siblings ...)
  2016-07-11 20:25             ` [PATCH v3 8/8] doc: revisions - clarify reachability examples Philip Oakley
@ 2016-07-12 19:29             ` Junio C Hamano
  2016-07-12 22:29               ` Philip Oakley
  2016-07-20 21:09             ` [PATCH v4 " Philip Oakley
  9 siblings, 1 reply; 107+ messages in thread
From: Junio C Hamano @ 2016-07-12 19:29 UTC (permalink / raw)
  To: Philip Oakley; +Cc: GitList, Jeff King

Philip Oakley <philipoakley@iee.org> writes:

> This is the re-roll of the po/range-doc (2016-07-01) 3 commits and its
> follow on patch.
>
> The series has gained additional patches following the discussions
> ($gmane/298790).
>
> The original first 3 patches are unchanged, though 2/8 has been inserted
> to name the Left and Right ranges.
>
> The extra four patches carefully tease out the clarification of
> reachability. Reachability is defined relative the ancestry chain thus
> (hopefully) avoiding misunderstandings.
>
> The final patch updates the summary examples, and the tricky (for the
> untutored reader) two dots case of a linear development where r1..r2
> excludes r1 itself.
>
> The patches can be squashed together if required.

Looked mostly sensible, except for a few things mentioned in the
reviews by Marc (to which I mostly agree with).

Thanks.


^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: [PATCH v3 4/8] doc: give headings for the two and three dot notations
  2016-07-12 13:44               ` Marc Branchaud
  2016-07-12 17:04                 ` Junio C Hamano
@ 2016-07-12 21:41                 ` Philip Oakley
  2016-07-12 22:12                   ` Jeff King
  1 sibling, 1 reply; 107+ messages in thread
From: Philip Oakley @ 2016-07-12 21:41 UTC (permalink / raw)
  To: GitList, Marc Branchaud; +Cc: Junio C Hamano, Jeff King

From: "Marc Branchaud" <marcnarc@xiplink.com>
> On 2016-07-11 04:25 PM, Philip Oakley wrote:
>> 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.

Which doc package is that with? It had formatted OK for the html web pages.

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

Yes, I noticed that after sending. Maybe "^<rev>" (i.e. include the <rev> 
part) to show that its a prefix not a suffix

>
> 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"?
>

Part of the earlier discussions as about avoiding new termininologies just 
for the sake of it.

>>
>> -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?


OK
>
>> +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.

OK

>
> 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.
>
>>
>> +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.

Isn't it that these are ranges of commits, rather than a single commit, so 
would go in this part of the docs, but I see your point.

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

OK.
>
> Two other shorthands exist for naming a set that is formed
> by a commit and its parent commits.
>
>>
>> -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.
>

In the contect of the other pages it's included in, the use of lower case, 
is the next down level. ALL CAPS would be the top level heading.

I'll review.
--
Philip 


^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: [PATCH v3 7/8] doc: revisions - define `reachable`
  2016-07-12 13:48               ` Marc Branchaud
@ 2016-07-12 21:44                 ` Philip Oakley
  0 siblings, 0 replies; 107+ messages in thread
From: Philip Oakley @ 2016-07-12 21:44 UTC (permalink / raw)
  To: GitList, Marc Branchaud; +Cc: Junio C Hamano, Jeff King

From: "Marc Branchaud" <marcnarc@xiplink.com>
> On 2016-07-11 04:25 PM, Philip Oakley wrote:
>> Do not self-define `reachable`, which can lead to misunderstanding.
>> Instead define `reachability` explictly.
>>
>> Signed-off-by: Philip Oakley <philipoakley@iee.org>
>> ---
>>   Documentation/revisions.txt | 14 ++++++++++----
>>   1 file changed, 10 insertions(+), 4 deletions(-)
>>
>> diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt
>> index 1c59e87..a3cd28b 100644
>> --- a/Documentation/revisions.txt
>> +++ b/Documentation/revisions.txt
>> @@ -237,10 +237,16 @@ SPECIFYING RANGES
>>   -----------------
>>
>>   History traversing commands such as `git log` operate on a set
>> -of commits, not just a single commit.  To these commands,
>> -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.
>> +of commits, not just a single commit.
>> +
>> +For these commands,
>> +specifying a single revision, using the notation described in the
>> +previous section, means the `reachable` set of commits of the given
>> +commit.
>
> Better as "... means the set of commits `reachable` from the given 
> commit."

OK. The main aspect is show that 'reachable' is a specific term.

>
>> +
>> +A commit's reachable set is the commit itself and the commits of
>> +its ancestry chain.
>> +
>
> s/of/in/

OK.
>
--
Philip 


^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: [PATCH v3 2/8] doc: revisions - name the Left and Right sides
  2016-07-12 16:47               ` Junio C Hamano
@ 2016-07-12 21:47                 ` Philip Oakley
  0 siblings, 0 replies; 107+ messages in thread
From: Philip Oakley @ 2016-07-12 21:47 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: GitList, Jeff King

From: "Junio C Hamano" <gitster@pobox.com>
> Philip Oakley <philipoakley@iee.org> writes:
>
>> The terms Left and Right side originate from the symmetric
>> difference. Name them there.
>> ---
>
> Sign-off?

Oops - will fix.
>
>>  Documentation/revisions.txt | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt
>> index 19314e3..79f6d03 100644
>> --- a/Documentation/revisions.txt
>> +++ b/Documentation/revisions.txt
>> @@ -256,7 +256,7 @@ 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' or 'r2' but not from both.
>> +'r1' (Left side) or 'r2' (Right side) but not from both.
>
> I think it is a good idea to call them explicitly left and right,
> but I do not think they need to be capitalized here or on the title
> of the patch.

OK - can fix.

>
>>  In these two shorthands, you can omit one end and let it default to 
>> HEAD.
>>  For example, 'origin..' is a shorthand for 'origin..HEAD' and asks "What
>
--
Philip 


^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: [PATCH v3 4/8] doc: give headings for the two and three dot notations
  2016-07-12 17:04                 ` Junio C Hamano
@ 2016-07-12 22:11                   ` Philip Oakley
  2016-07-19 16:03                     ` Jakub Narębski
  0 siblings, 1 reply; 107+ messages in thread
From: Philip Oakley @ 2016-07-12 22:11 UTC (permalink / raw)
  To: Junio C Hamano, Marc Branchaud; +Cc: GitList, Jeff King

From: "Junio C Hamano" <gitster@pobox.com>
> Marc Branchaud <marcnarc@xiplink.com> writes:
>
>>> +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"?
>
> Thanks for pointing out the potential confusion between ^X (exclude
> reachable), and X^ (the first parent).  Commit exclusion is probably
> a good heading.
>
OK - I'll see about incorporating that.

>>> -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?
>>> ...
>>> +The '...' (three dot) Symmetric Difference notation
>
> This uses a strange capitalization rule.  s/notation/Notation/
> perhaps?  The same comment for "Additional Shothand notation" below.
>

I'd just capitalised the specific term. Will change.

>>> +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>>   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.
>
> An alternative would be to have
>
>    - Dotted range notations
>      - Two-dot notation
>      - Three-dot notation
>
> which would help make it stand out that defaulting is common
> characteristics between .. and ... notations.  But I can imagine
> that your "with slight duplication" variant below would work well,
> too.

I'll look into that.

>
>> 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.
>
>>> +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.
>
> I actually think this is a good place to have them described.
> <rev>^<number> is about specifying a single commit.  These two are
> not that (you can say HEAD^2^@ but you cannot say HEAD^@^2, for
> example).

These two are special cases I'm not too familiar with, particularly the r1^! 
which I didn't undesrtand from the description...

--
Philip 


^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: [PATCH v3 4/8] doc: give headings for the two and three dot notations
  2016-07-12 21:41                 ` Philip Oakley
@ 2016-07-12 22:12                   ` Jeff King
  0 siblings, 0 replies; 107+ messages in thread
From: Jeff King @ 2016-07-12 22:12 UTC (permalink / raw)
  To: Philip Oakley; +Cc: GitList, Marc Branchaud, Junio C Hamano

On Tue, Jul 12, 2016 at 10:41:35PM +0100, Philip Oakley wrote:

> > > +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.
> 
> Which doc package is that with? It had formatted OK for the html web pages.

I get the same with:

  make gitrevisions.7
  man -l gitrevisions.7

Asciidoc 8.6.9, docbook-xsl 4.5 if it matters.

Rendering single-quotes as underline is normal in this case (though it's
not great for punctuation like this, as it kind of blends with the dots;
I know we use it elsewhere in this document, though).  The failure to
continue the bold through the end of line looks like a bug, though.

The generated XML (from asciidoc) looks reasonable:

  <title>The <emphasis>..</emphasis> (two-dot) range notation</title>

The roff looks like:

  .SS "The \fI\&.\&.\fR (two\-dot) range notation"

The "\fR" switches us back to "Roman" from italics, which is presumably
the problem. We really want to say "switch back what we were using
before \fI".

Switching it to "\fP" fixes it, but it's not clear to me if that's
actually portable, or a groff-ism. I don't know roff very well and
documentation seems to be quite hard to find. So it's either a bug in
docbook, or an intentional decision they've made because roff can't
portably do better. I'm not sure which.

-Peff

^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: [PATCH v3 0/8] Name for A..B ranges?
  2016-07-12 19:29             ` [PATCH v3 0/8] Name for A..B ranges? Junio C Hamano
@ 2016-07-12 22:29               ` Philip Oakley
  0 siblings, 0 replies; 107+ messages in thread
From: Philip Oakley @ 2016-07-12 22:29 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: GitList, Jeff King, Marc Branchaud

From: "Junio C Hamano" <gitster@pobox.com>
> Philip Oakley <philipoakley@iee.org> writes:
> 
>> This is the re-roll of the po/range-doc (2016-07-01) 3 commits and its
>> follow on patch.
>>
>> The series has gained additional patches following the discussions
>> ($gmane/298790).
..
>>
>> The patches can be squashed together if required.
> 
> Looked mostly sensible, except for a few things mentioned in the
> reviews by Marc (to which I mostly agree with).
> 

Thanks. I'll update in the next few days.

Philip

^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: [PATCH v3 4/8] doc: give headings for the two and three dot notations
  2016-07-12 22:11                   ` Philip Oakley
@ 2016-07-19 16:03                     ` Jakub Narębski
  2016-07-19 19:15                       ` Philip Oakley
  0 siblings, 1 reply; 107+ messages in thread
From: Jakub Narębski @ 2016-07-19 16:03 UTC (permalink / raw)
  To: Philip Oakley, Junio C Hamano, Marc Branchaud; +Cc: GitList, Jeff King

W dniu 2016-07-13 o 00:11, Philip Oakley pisze:
> From: "Junio C Hamano" <gitster@pobox.com>
[...]
>> I actually think this is a good place to have them described.
>> <rev>^<number> is about specifying a single commit.  These two are
>> not that (you can say HEAD^2^@ but you cannot say HEAD^@^2, for
>> example).
> 
> These two are special cases I'm not too familiar with, particularly
> the r1^! which I didn't understand from the description...

<rev>^@ is all parents of <rev>, that is

  <rev>^@  ==  <rev>^1 <rev>^2 ... <rev>^<n>

where <n> is number of parents commit <rev> has.


<rev>^! is (if standalone) a single commit range, only <rev> revision.
It is actually

  <rev>^!  ==  ( <rev> --not <rev>^@ )

that is, reachable from <rev> but not from any of its parents.
Parentheses here denote that `--not` does not affect the rest of
rev-like parameters.


Hope that helps
-- 
Jakub Narębski

^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: [PATCH v3 4/8] doc: give headings for the two and three dot notations
  2016-07-19 16:03                     ` Jakub Narębski
@ 2016-07-19 19:15                       ` Philip Oakley
  0 siblings, 0 replies; 107+ messages in thread
From: Philip Oakley @ 2016-07-19 19:15 UTC (permalink / raw)
  To: git, Jakub Narębski
  Cc: Jeff King, "Junio C Hamano", Marc Branchaud

From: "Jakub Narębski" <jnareb@gmail.com>
>W dniu 2016-07-13 o 00:11, Philip Oakley pisze:
>> From: "Junio C Hamano" <gitster@pobox.com>
> [...]
>>> I actually think this is a good place to have them described.
>>> <rev>^<number> is about specifying a single commit.  These two are
>>> not that (you can say HEAD^2^@ but you cannot say HEAD^@^2, for
>>> example).
>>
>> These two are special cases I'm not too familiar with, particularly
>> the r1^! which I didn't understand from the description...
>
> <rev>^@ is all parents of <rev>, that is
>
>  <rev>^@  ==  <rev>^1 <rev>^2 ... <rev>^<n>
>
> where <n> is number of parents commit <rev> has.
>
>
> <rev>^! is (if standalone) a single commit range, only <rev> revision.
> It is actually
>
>  <rev>^!  ==  ( <rev> --not <rev>^@ )
>
> that is, reachable from <rev> but not from any of its parents.
> Parentheses here denote that `--not` does not affect the rest of
> rev-like parameters.
>
>
> Hope that helps
> -- 

The tricky part is seeing that, rather than being a depth wise range, it's 
actually a width wise range that is designed to cover the scenarios around 
merges

e.g. $ git rev-parse 6c71a849^!
or $ git rev-parse 6c71a849^@

In the doc that I'm updating I'll add a comment that it's particulalry 
useful around merges.

Mind you I did see dscho quote it in $gmane/299738
" You can also inspect the diff of a commit, using the ^! suffix, e.g.

  git difftool -x diff origin/master~3^!

--
Philip 


^ permalink raw reply	[flat|nested] 107+ messages in thread

* [PATCH v4 0/8] Name for A..B ranges?
  2016-07-11 20:25           ` [PATCH v3 0/8] " Philip Oakley
                               ` (8 preceding siblings ...)
  2016-07-12 19:29             ` [PATCH v3 0/8] Name for A..B ranges? Junio C Hamano
@ 2016-07-20 21:09             ` Philip Oakley
  2016-07-20 21:10               ` [PATCH v4 1/8] doc: use 'symmetric difference' consistently Philip Oakley
                                 ` (11 more replies)
  9 siblings, 12 replies; 107+ messages in thread
From: Philip Oakley @ 2016-07-20 21:09 UTC (permalink / raw)
  To: GitList; +Cc: Junio C Hamano, Jeff King, Marc Branchaud, Jakub Narębski

This is the V4 re-roll of the po/range-doc (2016-07-01) 3 commits and its
follow on patch.

Capitalisation has been fixed.
Heading levels for man pages has been fixed.
Quoting of the caret has been fixed.
The extra width wise 'caret' shorthands now mention their applicability to merge commits.

No change in the number of patches. Interdiff below.

The patches carefully tease out the clarification of
reachability. Reachability is defined relative the ancestry chain thus
(hopefully) avoiding misunderstandings.

The final patch updates the summary examples, and the tricky (for the
untutored reader) two dots case of a linear development where r1..r2
excludes r1 itself.

The patches can be squashed together if required.

Original discussion starts at: $gmane/297908
V1 patch series $gmane/298223
V2 patch series $gmane/298689
V3 patch series $gmane/299293


Philip Oakley (8):
  doc: use 'symmetric difference' consistently
  doc: revisions - name the left and right sides
  doc: show the actual left, right, and boundary marks
  doc: give headings for the two and three dot notations
  doc: gitrevisions - use 'reachable' in page description
  doc: gitrevisions - clarify 'latter case' is revision walk
  doc: revisions  - define `reachable`
  doc: revisions - clarify reachability examples

 Documentation/gitk.txt             |  2 +-
 Documentation/gitrevisions.txt     |  6 +--
 Documentation/pretty-formats.txt   |  2 +-
 Documentation/rev-list-options.txt |  4 +-
 Documentation/revisions.txt        | 83 ++++++++++++++++++++++++--------------
 5 files changed, 59 insertions(+), 38 deletions(-)

 interdiff:
 
 diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt
index dba4fc6..14622cc 100644
--- a/Documentation/revisions.txt
+++ b/Documentation/revisions.txt
@@ -241,35 +241,38 @@ of commits, not just a single commit.
 
 For these commands,
 specifying a single revision, using the notation described in the
-previous section, means the `reachable` set of commits of the given
+previous section, means the set of commits `reachable` from the given
 commit.
 
-A commit's reachable set is the commit itself and the commits of
+A commit's reachable set is the commit itself and the commits in
 its 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 those reachable from 'r1' (i.e. 'r1' and its
-ancestors).
-
-The '..' (two-dot) range notation
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-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.
+Commit Exclusions
+~~~~~~~~~~~~~~~~~
+
+'{caret}<rev>' (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' (i.e. 'r1' and
+ its ancestors).
+
+Dotted Range Notations
+~~~~~~~~~~~~~~~~~~~~~~
+
+The '..' (two-dot) Range Notation::
+ 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 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
@@ -278,10 +281,10 @@ 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.
 
-Additional '{caret}' Shorthand notations
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Two other shorthands for naming a set that is formed by a commit
-and its parent commits exist.
+Special '<rev>{caret}' Shorthand Notations
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Two other shorthands exist, particularly useful for merge commits, is
+for naming a set that is formed by a commit and its parent commits.
 
 The 'r1{caret}@' notation means all parents of 'r1'.
 

-- 
2.9.0.windows.1


^ permalink raw reply related	[flat|nested] 107+ messages in thread

* [PATCH v4 1/8] doc: use 'symmetric difference' consistently
  2016-07-20 21:09             ` [PATCH v4 " Philip Oakley
@ 2016-07-20 21:10               ` Philip Oakley
  2016-07-20 21:10               ` [PATCH v4 2/8] doc: revisions - name the left and right sides Philip Oakley
                                 ` (10 subsequent siblings)
  11 siblings, 0 replies; 107+ messages in thread
From: Philip Oakley @ 2016-07-20 21:10 UTC (permalink / raw)
  To: GitList; +Cc: Junio C Hamano, Jeff King, Marc Branchaud, Jakub Narębski

Signed-off-by: Philip Oakley <philipoakley@iee.org>
---
 Documentation/gitk.txt             | 2 +-
 Documentation/rev-list-options.txt | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/Documentation/gitk.txt b/Documentation/gitk.txt
index 6ade002..6c3eb15 100644
--- a/Documentation/gitk.txt
+++ b/Documentation/gitk.txt
@@ -70,7 +70,7 @@ linkgit:git-rev-list[1] for a complete list.
 
 --left-right::
 
-	Mark which side of a symmetric diff a commit is reachable
+	Mark which side of a symmetric difference a commit is reachable
 	from.  Commits from the left side are prefixed with a `<`
 	symbol and those from the right with a `>` symbol.
 
diff --git a/Documentation/rev-list-options.txt b/Documentation/rev-list-options.txt
index 4f009d4..6dc0bb0 100644
--- a/Documentation/rev-list-options.txt
+++ b/Documentation/rev-list-options.txt
@@ -225,7 +225,7 @@ excluded from the output.
 
 --left-only::
 --right-only::
-	List only commits on the respective side of a symmetric range,
+	List only commits on the respective side of a symmetric difference,
 	i.e. only those which would be marked `<` resp. `>` by
 	`--left-right`.
 +
@@ -766,7 +766,7 @@ ifdef::git-rev-list[]
 endif::git-rev-list[]
 
 --left-right::
-	Mark which side of a symmetric diff a commit is reachable from.
+	Mark which side of a symmetric difference a commit is reachable from.
 	Commits from the left side are prefixed with `<` and those from
 	the right with `>`.  If combined with `--boundary`, those
 	commits are prefixed with `-`.
-- 
2.9.0.windows.1


^ permalink raw reply related	[flat|nested] 107+ messages in thread

* [PATCH v4 2/8] doc: revisions - name the left and right sides
  2016-07-20 21:09             ` [PATCH v4 " Philip Oakley
  2016-07-20 21:10               ` [PATCH v4 1/8] doc: use 'symmetric difference' consistently Philip Oakley
@ 2016-07-20 21:10               ` Philip Oakley
  2016-07-20 21:10               ` [PATCH v4 3/8] doc: show the actual left, right, and boundary marks Philip Oakley
                                 ` (9 subsequent siblings)
  11 siblings, 0 replies; 107+ messages in thread
From: Philip Oakley @ 2016-07-20 21:10 UTC (permalink / raw)
  To: GitList; +Cc: Junio C Hamano, Jeff King, Marc Branchaud, Jakub Narębski

The terms left and right side originate from the symmetric
difference. Name them there.

Signed-off-by: Philip Oakley <philipoakley@iee.org>
---
 Documentation/revisions.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt
index 19314e3..6e9cd41 100644
--- a/Documentation/revisions.txt
+++ b/Documentation/revisions.txt
@@ -256,7 +256,7 @@ 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' or 'r2' but not from both.
+'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.
 For example, 'origin..' is a shorthand for 'origin..HEAD' and asks "What
-- 
2.9.0.windows.1


^ permalink raw reply related	[flat|nested] 107+ messages in thread

* [PATCH v4 3/8] doc: show the actual left, right, and boundary marks
  2016-07-20 21:09             ` [PATCH v4 " Philip Oakley
  2016-07-20 21:10               ` [PATCH v4 1/8] doc: use 'symmetric difference' consistently Philip Oakley
  2016-07-20 21:10               ` [PATCH v4 2/8] doc: revisions - name the left and right sides Philip Oakley
@ 2016-07-20 21:10               ` Philip Oakley
  2016-07-20 21:10               ` [PATCH v4 4/8] doc: give headings for the two and three dot notations Philip Oakley
                                 ` (8 subsequent siblings)
  11 siblings, 0 replies; 107+ messages in thread
From: Philip Oakley @ 2016-07-20 21:10 UTC (permalink / raw)
  To: GitList; +Cc: Junio C Hamano, Jeff King, Marc Branchaud, Jakub Narębski

Signed-off-by: Philip Oakley <philipoakley@iee.org>
---
Found while checking the 'symmetric difference' documentation
---
 Documentation/pretty-formats.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Documentation/pretty-formats.txt b/Documentation/pretty-formats.txt
index 29b19b9..10719e1 100644
--- a/Documentation/pretty-formats.txt
+++ b/Documentation/pretty-formats.txt
@@ -166,7 +166,7 @@ endif::git-rev-list[]
   respecting the `auto` settings of the former if we are going to a
   terminal). `auto` alone (i.e. `%C(auto)`) will turn on auto coloring
   on the next placeholders until the color is switched again.
-- '%m': left, right or boundary mark
+- '%m': left (`<`), right (`>`) or boundary (`-`) mark
 - '%n': newline
 - '%%': a raw '%'
 - '%x00': print a byte from a hex code
-- 
2.9.0.windows.1


^ permalink raw reply related	[flat|nested] 107+ messages in thread

* [PATCH v4 4/8] doc: give headings for the two and three dot notations
  2016-07-20 21:09             ` [PATCH v4 " Philip Oakley
                                 ` (2 preceding siblings ...)
  2016-07-20 21:10               ` [PATCH v4 3/8] doc: show the actual left, right, and boundary marks Philip Oakley
@ 2016-07-20 21:10               ` Philip Oakley
  2016-07-21 14:42                 ` Marc Branchaud
  2016-07-22 22:46                 ` Junio C Hamano
  2016-07-20 21:10               ` [PATCH v4 5/8] doc: gitrevisions - use 'reachable' in page description Philip Oakley
                                 ` (7 subsequent siblings)
  11 siblings, 2 replies; 107+ messages in thread
From: Philip Oakley @ 2016-07-20 21:10 UTC (permalink / raw)
  To: GitList; +Cc: Junio C Hamano, Jeff King, Marc Branchaud, Jakub Narębski

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 | 58 ++++++++++++++++++++++++++++-----------------
 1 file changed, 36 insertions(+), 22 deletions(-)

diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt
index 6e9cd41..5b37283 100644
--- a/Documentation/revisions.txt
+++ b/Documentation/revisions.txt
@@ -242,35 +242,49 @@ 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.
 
-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'.
-
-This 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'.
-
-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.
+Commit Exclusions
+~~~~~~~~~~~~~~~~~
+
+'{caret}<rev>' (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'.
+
+Dotted Range Notations
+~~~~~~~~~~~~~~~~~~~~~~
+
+The '..' (two-dot) Range Notation::
+ 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 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.
 
-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.
+Special '<rev>{caret}' Shorthand Notations
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Two other shorthands exist, particularly useful for merge commits, is
+for naming a set that is formed by a commit and its parent commits.
 
-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
+----------------------
 
 '<rev>'::
 	Include commits that are reachable from (i.e. ancestors of)
-- 
2.9.0.windows.1


^ permalink raw reply related	[flat|nested] 107+ messages in thread

* [PATCH v4 5/8] doc: gitrevisions - use 'reachable' in page description
  2016-07-20 21:09             ` [PATCH v4 " Philip Oakley
                                 ` (3 preceding siblings ...)
  2016-07-20 21:10               ` [PATCH v4 4/8] doc: give headings for the two and three dot notations Philip Oakley
@ 2016-07-20 21:10               ` Philip Oakley
  2016-07-20 21:10               ` [PATCH v4 6/8] doc: gitrevisions - clarify 'latter case' is revision walk Philip Oakley
                                 ` (6 subsequent siblings)
  11 siblings, 0 replies; 107+ messages in thread
From: Philip Oakley @ 2016-07-20 21:10 UTC (permalink / raw)
  To: GitList; +Cc: Junio C Hamano, Jeff King, Marc Branchaud, Jakub Narębski

Signed-off-by: Philip Oakley <philipoakley@iee.org>
---
 Documentation/gitrevisions.txt | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Documentation/gitrevisions.txt b/Documentation/gitrevisions.txt
index e903eb7..33039c6 100644
--- a/Documentation/gitrevisions.txt
+++ b/Documentation/gitrevisions.txt
@@ -15,8 +15,8 @@ DESCRIPTION
 
 Many Git commands take revision parameters as arguments. Depending on
 the command, they denote a specific commit or, for commands which
-walk the revision graph (such as linkgit:git-log[1]), all commits which can
-be reached from that commit. In the latter case one can also specify a
+walk the revision graph (such as linkgit:git-log[1]), all commits which are
+reachable from that commit. In the latter case one can also specify a
 range of revisions explicitly.
 
 In addition, some Git commands (such as linkgit:git-show[1]) also take
-- 
2.9.0.windows.1


^ permalink raw reply related	[flat|nested] 107+ messages in thread

* [PATCH v4 6/8] doc: gitrevisions - clarify 'latter case' is revision walk
  2016-07-20 21:09             ` [PATCH v4 " Philip Oakley
                                 ` (4 preceding siblings ...)
  2016-07-20 21:10               ` [PATCH v4 5/8] doc: gitrevisions - use 'reachable' in page description Philip Oakley
@ 2016-07-20 21:10               ` Philip Oakley
  2016-07-20 21:10               ` [PATCH v4 7/8] doc: revisions - define `reachable` Philip Oakley
                                 ` (5 subsequent siblings)
  11 siblings, 0 replies; 107+ messages in thread
From: Philip Oakley @ 2016-07-20 21:10 UTC (permalink / raw)
  To: GitList; +Cc: Junio C Hamano, Jeff King, Marc Branchaud, Jakub Narębski

The prior sentence has too many clauses for easy parsing.
Replace 'the latter case' with a direct quote.

Signed-off-by: Philip Oakley <philipoakley@iee.org>
---
 Documentation/gitrevisions.txt | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Documentation/gitrevisions.txt b/Documentation/gitrevisions.txt
index 33039c6..27dec5b 100644
--- a/Documentation/gitrevisions.txt
+++ b/Documentation/gitrevisions.txt
@@ -16,8 +16,8 @@ DESCRIPTION
 Many Git commands take revision parameters as arguments. Depending on
 the command, they denote a specific commit or, for commands which
 walk the revision graph (such as linkgit:git-log[1]), all commits which are
-reachable from that commit. In the latter case one can also specify a
-range of revisions explicitly.
+reachable from that commit. For commands that walk the revision graph one can
+also specify a range of revisions explicitly.
 
 In addition, some Git commands (such as linkgit:git-show[1]) also take
 revision parameters which denote other objects than commits, e.g. blobs
-- 
2.9.0.windows.1


^ permalink raw reply related	[flat|nested] 107+ messages in thread

* [PATCH v4 7/8] doc: revisions  - define `reachable`
  2016-07-20 21:09             ` [PATCH v4 " Philip Oakley
                                 ` (5 preceding siblings ...)
  2016-07-20 21:10               ` [PATCH v4 6/8] doc: gitrevisions - clarify 'latter case' is revision walk Philip Oakley
@ 2016-07-20 21:10               ` Philip Oakley
  2016-07-20 21:10               ` [PATCH v4 8/8] doc: revisions - clarify reachability examples Philip Oakley
                                 ` (4 subsequent siblings)
  11 siblings, 0 replies; 107+ messages in thread
From: Philip Oakley @ 2016-07-20 21:10 UTC (permalink / raw)
  To: GitList; +Cc: Junio C Hamano, Jeff King, Marc Branchaud, Jakub Narębski

Do not self-define `reachable`, which can lead to misunderstanding.
Instead define `reachability` explictly.

Signed-off-by: Philip Oakley <philipoakley@iee.org>
---
 Documentation/revisions.txt | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt
index 5b37283..d3b7cee 100644
--- a/Documentation/revisions.txt
+++ b/Documentation/revisions.txt
@@ -237,10 +237,16 @@ SPECIFYING RANGES
 -----------------
 
 History traversing commands such as `git log` operate on a set
-of commits, not just a single commit.  To these commands,
-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.
+of commits, not just a single commit.
+
+For these commands,
+specifying a single revision, using the notation described in the
+previous section, means the set of commits `reachable` from the given
+commit.
+
+A commit's reachable set is the commit itself and the commits in
+its ancestry chain.
+
 
 Commit Exclusions
 ~~~~~~~~~~~~~~~~~
-- 
2.9.0.windows.1


^ permalink raw reply related	[flat|nested] 107+ messages in thread

* [PATCH v4 8/8] doc: revisions - clarify reachability examples
  2016-07-20 21:09             ` [PATCH v4 " Philip Oakley
                                 ` (6 preceding siblings ...)
  2016-07-20 21:10               ` [PATCH v4 7/8] doc: revisions - define `reachable` Philip Oakley
@ 2016-07-20 21:10               ` Philip Oakley
  2016-07-20 22:22               ` [PATCH v4 0/8] Name for A..B ranges? Junio C Hamano
                                 ` (3 subsequent siblings)
  11 siblings, 0 replies; 107+ messages in thread
From: Philip Oakley @ 2016-07-20 21:10 UTC (permalink / raw)
  To: GitList; +Cc: Junio C Hamano, Jeff King, Marc Branchaud, Jakub Narębski

 For the r1..r2 case, the exclusion of r1, rather than inclusion of r2,
 would be the unexpected case in natural language for a simple linear
 development, i.e. start..end excludes start.

Signed-off-by: Philip Oakley <philipoakley@iee.org>
---
 Documentation/revisions.txt | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt
index d3b7cee..14622cc 100644
--- a/Documentation/revisions.txt
+++ b/Documentation/revisions.txt
@@ -254,7 +254,8 @@ Commit Exclusions
 '{caret}<rev>' (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'.
+ from 'r2' but exclude the ones reachable from 'r1' (i.e. 'r1' and
+ its ancestors).
 
 Dotted Range Notations
 ~~~~~~~~~~~~~~~~~~~~~~
@@ -293,12 +294,12 @@ Revision Range Summary
 ----------------------
 
 '<rev>'::
-	Include commits that are reachable from (i.e. ancestors of)
-	<rev>.
+	Include commits that are reachable from <rev> (i.e. <rev> and its
+	ancestors).
 
 '{caret}<rev>'::
-	Exclude commits that are reachable from (i.e. ancestors of)
-	<rev>.
+	Exclude commits that are reachable from <rev> (i.e. <rev> and its
+	ancestors).
 
 '<rev1>..<rev2>'::
 	Include commits that are reachable from <rev2> but exclude
-- 
2.9.0.windows.1


^ permalink raw reply related	[flat|nested] 107+ messages in thread

* Re: [PATCH v4 0/8] Name for A..B ranges?
  2016-07-20 21:09             ` [PATCH v4 " Philip Oakley
                                 ` (7 preceding siblings ...)
  2016-07-20 21:10               ` [PATCH v4 8/8] doc: revisions - clarify reachability examples Philip Oakley
@ 2016-07-20 22:22               ` Junio C Hamano
  2016-08-11 21:50               ` [PATCH v5 00/12] Update git revisions Philip Oakley
                                 ` (2 subsequent siblings)
  11 siblings, 0 replies; 107+ messages in thread
From: Junio C Hamano @ 2016-07-20 22:22 UTC (permalink / raw)
  To: Philip Oakley; +Cc: GitList, Jeff King, Marc Branchaud, Jakub Narębski

Philip Oakley <philipoakley@iee.org> writes:

> No change in the number of patches. Interdiff below.
>
> The patches carefully tease out the clarification of
> reachability. Reachability is defined relative the ancestry chain thus
> (hopefully) avoiding misunderstandings.
>
> The final patch updates the summary examples, and the tricky (for the
> untutored reader) two dots case of a linear development where r1..r2
> excludes r1 itself.

All looked sensible and each focused on a single issue and fixing it
well.  Done very nicely.

Thanks.  Will (re)queue, wait for a few days for further comments
and let's merge it to 'next'.


^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: [PATCH v4 4/8] doc: give headings for the two and three dot notations
  2016-07-20 21:10               ` [PATCH v4 4/8] doc: give headings for the two and three dot notations Philip Oakley
@ 2016-07-21 14:42                 ` Marc Branchaud
  2016-07-21 19:54                   ` Philip Oakley
  2016-07-22 22:46                 ` Junio C Hamano
  1 sibling, 1 reply; 107+ messages in thread
From: Marc Branchaud @ 2016-07-21 14:42 UTC (permalink / raw)
  To: Philip Oakley, GitList; +Cc: Junio C Hamano, Jeff King, Jakub Narębski

On 2016-07-20 05:10 PM, Philip Oakley wrote:
> 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 | 58 ++++++++++++++++++++++++++++-----------------
>   1 file changed, 36 insertions(+), 22 deletions(-)
>
> diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt
> index 6e9cd41..5b37283 100644
> --- a/Documentation/revisions.txt
> +++ b/Documentation/revisions.txt
> @@ -242,35 +242,49 @@ 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.
>
> -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'.
> -
> -This 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'.
> -
> -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.
> +Commit Exclusions
> +~~~~~~~~~~~~~~~~~
> +
> +'{caret}<rev>' (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'.
> +
> +Dotted Range Notations
> +~~~~~~~~~~~~~~~~~~~~~~
> +
> +The '..' (two-dot) Range Notation::
> + 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

s/called/called the/

> + 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 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.
>
> -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.
> +Special '<rev>{caret}' Shorthand Notations
> +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Sorry, but this header also does not render properly in the man page. 
Maybe just "Special {caret} Shorthand Notations"?  (But read on!)

> +Two other shorthands exist, particularly useful for merge commits, is
> +for naming a set that is formed by a commit and its parent commits.
>
> -To summarize:
> +The 'r1{caret}@' notation means all parents of 'r1'.
> +
> +'r1{caret}!' includes commit 'r1' but excludes all of its parents.

My immediate thought upon reading this is "Why not just use 'r1'?"  I 
think the answer is "This truncates the range."  So, for example, "git 
log r1" shows you r1 and its ancestors, while "git log r1^!" only shows 
you r1.  I think you should add this example, or something similar.

But, really, this means that the notation is another "Commit Exclusion" 
and properly belongs in that section.

That makes this "Special Notations" section rather thin.  I suggest 
moving a slightly expanded <rev>^@ description to a small subsection 
just before Commit Exclusions, and deleting the Special Notations 
section altogether.  So add something like this:

	Commit Parents
	~~~~~~~~~~~~~~

	'<rev>{caret}@' Notation::
	 The 'r1{caret}@' notation means all parents of 'r1',
	 excluding 'r1' itself.

This smoothly re-introduces the notion of parents for readers who 
skipped to this section, and helps them make sense of the <rev>^! notation.

Plus there's no longer anything "special" about any of the syntax.

> +
> +Revision Range Summary
> +----------------------

Sorry, but the man page renders this in all caps.  I really think you 
should use ~~~~~~~~~ here.

		M.


^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: [PATCH v4 4/8] doc: give headings for the two and three dot notations
  2016-07-21 14:42                 ` Marc Branchaud
@ 2016-07-21 19:54                   ` Philip Oakley
  2016-07-21 21:20                     ` Marc Branchaud
  0 siblings, 1 reply; 107+ messages in thread
From: Philip Oakley @ 2016-07-21 19:54 UTC (permalink / raw)
  To: GitList, Marc Branchaud; +Cc: Junio C Hamano, Jeff King, Jakub Narebski

From: "Marc Branchaud" <marcnarc@xiplink.com>
> On 2016-07-20 05:10 PM, Philip Oakley wrote:
>> 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 | 58 
>> ++++++++++++++++++++++++++++-----------------
>>   1 file changed, 36 insertions(+), 22 deletions(-)
>>
>> diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt
>> index 6e9cd41..5b37283 100644
>> --- a/Documentation/revisions.txt
>> +++ b/Documentation/revisions.txt
>> @@ -242,35 +242,49 @@ 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.
>>
>> -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'.
>> -
>> -This 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'.
>> -
>> -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.
>> +Commit Exclusions
>> +~~~~~~~~~~~~~~~~~
>> +
>> +'{caret}<rev>' (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'.
>> +
>> +Dotted Range Notations
>> +~~~~~~~~~~~~~~~~~~~~~~
>> +
>> +The '..' (two-dot) Range Notation::
>> + 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
>
> s/called/called the/

The wording is the original ;-) Can change.

>
>> + 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 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.
>>
>> -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.
>> +Special '<rev>{caret}' Shorthand Notations
>> +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> Sorry, but this header also does not render properly in the man page. 
> Maybe just "Special {caret} Shorthand Notations"?  (But read on!)

rendered fine on the MYS2 man invocation - I had had to add the <rev> prefix 
to the quoted title to make it work.

What went wrong for you? (I'll read on)


>
>> +Two other shorthands exist, particularly useful for merge commits, is
>> +for naming a set that is formed by a commit and its parent commits.
>>
>> -To summarize:
>> +The 'r1{caret}@' notation means all parents of 'r1'.
>> +
>> +'r1{caret}!' includes commit 'r1' but excludes all of its parents.
>
> My immediate thought upon reading this is "Why not just use 'r1'?"  I 
> think the answer is "This truncates the range."  So, for example, "git log 
> r1" shows you r1 and its ancestors, while "git log r1^!" only shows you 
> r1.  I think you should add this example, or something similar.
>

I'd also asked that question in one of my replies earlier $gmane/299849. I 
was then able to determine that it was a width wide 'range' covering 
multi-parent situations.

Identifying an example could be good if it was succinct and explanatory.

$ git rev-parse 6c71a849^!
> But, really, this means that the notation is another "Commit Exclusion" 
> and properly belongs in that section.

I think it's bigger than that.
>
> That makes this "Special Notations" section rather thin.  I suggest moving 
> a slightly expanded <rev>^@ description to a small subsection just before 
> Commit Exclusions, and deleting the Special Notations section altogether. 
> So add something like this:
>
> Commit Parents
> ~~~~~~~~~~~~~~

It's a bit better, but I'm still not sure it really tells the story, maybe 
"Handling Commit Parent(s)", with that subtle extra emphasis!

>
> '<rev>{caret}@' Notation::
> The 'r1{caret}@' notation means all parents of 'r1',
> excluding 'r1' itself.
>
> This smoothly re-introduces the notion of parents for readers who skipped 
> to this section, and helps them make sense of the <rev>^! notation.
>
> Plus there's no longer anything "special" about any of the syntax.
>
>> +
>> +Revision Range Summary
>> +----------------------
>
> Sorry, but the man page renders this in all caps.  I really think you 
> should use ~~~~~~~~~ here.

Yes, the man page formating is annoying relative to the web page formatting 
which it has to be compared against.

I felt that it was at a higher level than the other sub-headings, and that 
using mixed case did work well on the html (the Git for Windows standard).

At the moment I'm minded to keep it as is unless others chime in.

>
> M.
>
I'll be away till mid next week.
--
Philip 


^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: [PATCH v4 4/8] doc: give headings for the two and three dot notations
  2016-07-21 19:54                   ` Philip Oakley
@ 2016-07-21 21:20                     ` Marc Branchaud
  0 siblings, 0 replies; 107+ messages in thread
From: Marc Branchaud @ 2016-07-21 21:20 UTC (permalink / raw)
  To: Philip Oakley, GitList; +Cc: Junio C Hamano, Jeff King, Jakub Narebski

On 2016-07-21 03:54 PM, Philip Oakley wrote:
> From: "Marc Branchaud" <marcnarc@xiplink.com>
>> On 2016-07-20 05:10 PM, Philip Oakley wrote:
>>> 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 | 58
>>> ++++++++++++++++++++++++++++-----------------
>>>   1 file changed, 36 insertions(+), 22 deletions(-)
>>>
>>> diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt
>>> index 6e9cd41..5b37283 100644
>>> --- a/Documentation/revisions.txt
>>> +++ b/Documentation/revisions.txt
>>> @@ -242,35 +242,49 @@ 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.
>>>
>>> -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'.
>>> -
>>> -This 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'.
>>> -
>>> -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.
>>> +Commit Exclusions
>>> +~~~~~~~~~~~~~~~~~
>>> +
>>> +'{caret}<rev>' (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'.
>>> +
>>> +Dotted Range Notations
>>> +~~~~~~~~~~~~~~~~~~~~~~
>>> +
>>> +The '..' (two-dot) Range Notation::
>>> + 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
>>
>> s/called/called the/
>
> The wording is the original ;-) Can change.
>
>>
>>> + 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 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.
>>>
>>> -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.
>>> +Special '<rev>{caret}' Shorthand Notations
>>> +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>
>> Sorry, but this header also does not render properly in the man page.
>> Maybe just "Special {caret} Shorthand Notations"?  (But read on!)
>
> rendered fine on the MYS2 man invocation - I had had to add the <rev>
> prefix to the quoted title to make it work.
>
> What went wrong for you? (I'll read on)

Only the word "Special" is emphasized (in bold).  The rest of the header 
is plain.

I'm using asciidoc 8.6.9, so I'm likely suffering from the bug Peff 
identified.

>>
>>> +Two other shorthands exist, particularly useful for merge commits, is
>>> +for naming a set that is formed by a commit and its parent commits.
>>>
>>> -To summarize:
>>> +The 'r1{caret}@' notation means all parents of 'r1'.
>>> +
>>> +'r1{caret}!' includes commit 'r1' but excludes all of its parents.
>>
>> My immediate thought upon reading this is "Why not just use 'r1'?"  I
>> think the answer is "This truncates the range."  So, for example, "git
>> log r1" shows you r1 and its ancestors, while "git log r1^!" only
>> shows you r1.  I think you should add this example, or something similar.
>>
>
> I'd also asked that question in one of my replies earlier $gmane/299849.
> I was then able to determine that it was a width wide 'range' covering
> multi-parent situations.

Obviously, I see it more an anti-range.  You're never going to get more 
than a single commit with this notation.

> Identifying an example could be good if it was succinct and explanatory.

What do you think of my example?

> $ git rev-parse 6c71a849^!
>> But, really, this means that the notation is another "Commit
>> Exclusion" and properly belongs in that section.
>
> I think it's bigger than that.
>>
>> That makes this "Special Notations" section rather thin.  I suggest
>> moving a slightly expanded <rev>^@ description to a small subsection
>> just before Commit Exclusions, and deleting the Special Notations
>> section altogether. So add something like this:
>>
>> Commit Parents
>> ~~~~~~~~~~~~~~
>
> It's a bit better, but I'm still not sure it really tells the story,
> maybe "Handling Commit Parent(s)", with that subtle extra emphasis!

"Specifying Commit Parents"?  Any of these work for me, really.

>>
>> '<rev>{caret}@' Notation::
>> The 'r1{caret}@' notation means all parents of 'r1',
>> excluding 'r1' itself.
>>
>> This smoothly re-introduces the notion of parents for readers who
>> skipped to this section, and helps them make sense of the <rev>^!
>> notation.
>>
>> Plus there's no longer anything "special" about any of the syntax.
>>
>>> +
>>> +Revision Range Summary
>>> +----------------------
>>
>> Sorry, but the man page renders this in all caps.  I really think you
>> should use ~~~~~~~~~ here.
>
> Yes, the man page formating is annoying relative to the web page
> formatting which it has to be compared against.
>
> I felt that it was at a higher level than the other sub-headings, and
> that using mixed case did work well on the html (the Git for Windows
> standard).

IMHO it has to look like it's part of the SPECIFYING RANGES section.  It 
need not be higher than the other subsections though.

> At the moment I'm minded to keep it as is unless others chime in.

I'll bow to the will of the majority.

>>
>> M.
>>
> I'll be away till mid next week.

As will I!

		M.


^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: [PATCH v4 4/8] doc: give headings for the two and three dot notations
  2016-07-20 21:10               ` [PATCH v4 4/8] doc: give headings for the two and three dot notations Philip Oakley
  2016-07-21 14:42                 ` Marc Branchaud
@ 2016-07-22 22:46                 ` Junio C Hamano
  1 sibling, 0 replies; 107+ messages in thread
From: Junio C Hamano @ 2016-07-22 22:46 UTC (permalink / raw)
  To: Philip Oakley; +Cc: GitList, Jeff King, Marc Branchaud, Jakub Narębski

Philip Oakley <philipoakley@iee.org> writes:

> +Special '<rev>{caret}' Shorthand Notations
> +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> +Two other shorthands exist, particularly useful for merge commits, is
> +for naming a set that is formed by a commit and its parent commits.

As these are not all that "special", how about retitling this
section as:

	Other Shorthand Notations
        ~~~~~~~~~~~~~~~~~~~~~~~~~


> -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
> +----------------------
>  
>  '<rev>'::
>  	Include commits that are reachable from (i.e. ancestors of)

^ permalink raw reply	[flat|nested] 107+ messages in thread

* [PATCH v5 00/12] Update git revisions
  2016-07-20 21:09             ` [PATCH v4 " Philip Oakley
                                 ` (8 preceding siblings ...)
  2016-07-20 22:22               ` [PATCH v4 0/8] Name for A..B ranges? Junio C Hamano
@ 2016-08-11 21:50               ` Philip Oakley
  2016-08-11 21:50                 ` [PATCH v5 01/12] doc: use 'symmetric difference' consistently Philip Oakley
                                   ` (2 more replies)
  2016-08-11 23:03               ` [PATCH v5 " Philip Oakley
  2016-08-12  7:07               ` [PATCH v5 00/12] Update git revisions Philip Oakley
  11 siblings, 3 replies; 107+ messages in thread
From: Philip Oakley @ 2016-08-11 21:50 UTC (permalink / raw)
  To: GitList, Junio C Hamano; +Cc: Self

This has grown like topsy from a little two patch series that tried to
name the 2-dots notation [1] into this extended set of tweaks.

As documentation can be rather personal, I've split out each small change
so each can be individually justified.

Since V4, I've confirmed that the format breaking issue is that we cannot
quote code in headings in the man page layout - ultimately it's a docbook
decision, and follows the line of analysis Peff identified (see commentary
in the patch).

In addition the multi-parent notations have been clarified and extended.

Thus the old patch 4 has been split into three. The first three patches are
unchanged. The following 4 patches are also unchanged.

Finally, at the end an extra 2 patches are added to build up the examples by
including details of the notation expansions.

This updates po/range-doc (2016-07-20) 8 commits.

Hopefully my updated workflow will get the right patches to the right people.

[1] https://public-inbox.org/git/0648000B273C412AB7140AE959EBC99A%40PhilipOakley/

Philip Oakley (12):
  doc: use 'symmetric difference' consistently
  doc: revisions - name the left and right sides
  doc: show the actual left, right, and boundary marks
  doc: revisions: give headings for the two and three dot notations
  doc: revisions: extra clarification of <rev>^! notation effects
  doc: revisions: single vs multi-parent notation comparison
  doc: gitrevisions - use 'reachable' in page description
  doc: gitrevisions - clarify 'latter case' is revision walk
  doc: revisions  - define `reachable`
  doc: revisions - clarify reachability examples
  doc: revisions: show revision expansion in examples
  doc: revisions: sort examples and fix alignment of the unchanged

 Documentation/gitk.txt             |   2 +-
 Documentation/gitrevisions.txt     |   6 +-
 Documentation/pretty-formats.txt   |   2 +-
 Documentation/rev-list-options.txt |   4 +-
 Documentation/revisions.txt        | 121 +++++++++++++++++++++++--------------
 5 files changed, 84 insertions(+), 51 deletions(-)

-- 
2.9.0.windows.1


^ permalink raw reply	[flat|nested] 107+ messages in thread

* [PATCH v5 01/12] doc: use 'symmetric difference' consistently
  2016-08-11 21:50               ` [PATCH v5 00/12] Update git revisions Philip Oakley
@ 2016-08-11 21:50                 ` Philip Oakley
  2016-08-26 11:33                   ` Jakub Narębski
  2016-08-11 22:32                 ` [PATCH v5 00/12] Update git revisions Philip Oakley
  2016-08-12 23:45                 ` [PATCH v6 " Philip Oakley
  2 siblings, 1 reply; 107+ messages in thread
From: Philip Oakley @ 2016-08-11 21:50 UTC (permalink / raw)
  To: GitList, Junio C Hamano; +Cc: Self

Signed-off-by: Philip Oakley <philipoakley@iee.org>
---
unchanged
---
 Documentation/gitk.txt             | 2 +-
 Documentation/rev-list-options.txt | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/Documentation/gitk.txt b/Documentation/gitk.txt
index 6ade002..6c3eb15 100644
--- a/Documentation/gitk.txt
+++ b/Documentation/gitk.txt
@@ -70,7 +70,7 @@ linkgit:git-rev-list[1] for a complete list.
 
 --left-right::
 
-	Mark which side of a symmetric diff a commit is reachable
+	Mark which side of a symmetric difference a commit is reachable
 	from.  Commits from the left side are prefixed with a `<`
 	symbol and those from the right with a `>` symbol.
 
diff --git a/Documentation/rev-list-options.txt b/Documentation/rev-list-options.txt
index 4f009d4..6dc0bb0 100644
--- a/Documentation/rev-list-options.txt
+++ b/Documentation/rev-list-options.txt
@@ -225,7 +225,7 @@ excluded from the output.
 
 --left-only::
 --right-only::
-	List only commits on the respective side of a symmetric range,
+	List only commits on the respective side of a symmetric difference,
 	i.e. only those which would be marked `<` resp. `>` by
 	`--left-right`.
 +
@@ -766,7 +766,7 @@ ifdef::git-rev-list[]
 endif::git-rev-list[]
 
 --left-right::
-	Mark which side of a symmetric diff a commit is reachable from.
+	Mark which side of a symmetric difference a commit is reachable from.
 	Commits from the left side are prefixed with `<` and those from
 	the right with `>`.  If combined with `--boundary`, those
 	commits are prefixed with `-`.
-- 
2.9.0.windows.1


^ permalink raw reply related	[flat|nested] 107+ messages in thread

* Re: [PATCH v5 00/12] Update git revisions
  2016-08-11 21:50               ` [PATCH v5 00/12] Update git revisions Philip Oakley
  2016-08-11 21:50                 ` [PATCH v5 01/12] doc: use 'symmetric difference' consistently Philip Oakley
@ 2016-08-11 22:32                 ` Philip Oakley
  2016-08-12 23:45                 ` [PATCH v6 " Philip Oakley
  2 siblings, 0 replies; 107+ messages in thread
From: Philip Oakley @ 2016-08-11 22:32 UTC (permalink / raw)
  To: GitList, Junio C Hamano

I'm having trouble with my ISP is not playing ball. only cover and patch 1 
were sent.

Will retry with alternate service.

Philip
----- Original Message ----- 
From: "Philip Oakley" <philipoakley@iee.org>
Sent: Thursday, August 11, 2016 10:50 PM
Subject: [PATCH v5 00/12] Update git revisions


> This has grown like topsy from a little two patch series that tried to
> name the 2-dots notation [1] into this extended set of tweaks.
>
> As documentation can be rather personal, I've split out each small change
> so each can be individually justified.
>
> Since V4, I've confirmed that the format breaking issue is that we cannot
> quote code in headings in the man page layout - ultimately it's a docbook
> decision, and follows the line of analysis Peff identified (see commentary
> in the patch).
>
> In addition the multi-parent notations have been clarified and extended.
>
> Thus the old patch 4 has been split into three. The first three patches 
> are
> unchanged. The following 4 patches are also unchanged.
>
> Finally, at the end an extra 2 patches are added to build up the examples 
> by
> including details of the notation expansions.
>
> This updates po/range-doc (2016-07-20) 8 commits.
>
> Hopefully my updated workflow will get the right patches to the right 
> people.
>
> [1] 
> https://public-inbox.org/git/0648000B273C412AB7140AE959EBC99A%40PhilipOakley/
>
> Philip Oakley (12):
>  doc: use 'symmetric difference' consistently
>  doc: revisions - name the left and right sides
>  doc: show the actual left, right, and boundary marks
>  doc: revisions: give headings for the two and three dot notations
>  doc: revisions: extra clarification of <rev>^! notation effects
>  doc: revisions: single vs multi-parent notation comparison
>  doc: gitrevisions - use 'reachable' in page description
>  doc: gitrevisions - clarify 'latter case' is revision walk
>  doc: revisions  - define `reachable`
>  doc: revisions - clarify reachability examples
>  doc: revisions: show revision expansion in examples
>  doc: revisions: sort examples and fix alignment of the unchanged
>
> Documentation/gitk.txt             |   2 +-
> Documentation/gitrevisions.txt     |   6 +-
> Documentation/pretty-formats.txt   |   2 +-
> Documentation/rev-list-options.txt |   4 +-
> Documentation/revisions.txt        | 121 
> +++++++++++++++++++++++--------------
> 5 files changed, 84 insertions(+), 51 deletions(-)
>
> -- 
> 2.9.0.windows.1
>
>
> 


^ permalink raw reply	[flat|nested] 107+ messages in thread

* [PATCH v5 00/12] Update git revisions
  2016-07-20 21:09             ` [PATCH v4 " Philip Oakley
                                 ` (9 preceding siblings ...)
  2016-08-11 21:50               ` [PATCH v5 00/12] Update git revisions Philip Oakley
@ 2016-08-11 23:03               ` Philip Oakley
  2016-08-11 23:03                 ` [PATCH v5 01/12] doc: use 'symmetric difference' consistently Philip Oakley
  2016-08-12  7:07               ` [PATCH v5 00/12] Update git revisions Philip Oakley
  11 siblings, 1 reply; 107+ messages in thread
From: Philip Oakley @ 2016-08-11 23:03 UTC (permalink / raw)
  To: GitList, Junio C Hamano

This has grown like topsy from a little two patch series that tried to
name the 2-dots notation [1] into this extended set of tweaks.

As documentation can be rather personal, I've split out each small change
so each can be individually justified.

Since V4, I've confirmed that the format breaking issue is that we cannot
quote code in headings in the man page layout - ultimately it's a docbook
decision, and follows the line of analysis Peff identified (see commentary
in the patch).

In addition the multi-parent notations have been clarified and extended.

Thus the old patch 4 has been split into three. The first three patches are
unchanged. The following 4 patches are also unchanged.

Finally, at the end an extra 2 patches are added to build up the examples by
including details of the notation expansions.

This updates po/range-doc (2016-07-20) 8 commits.

Hopefully my updated workflow will get the right patches to the right people.

[1] https://public-inbox.org/git/0648000B273C412AB7140AE959EBC99A%40PhilipOakley/

Philip Oakley (12):
  doc: use 'symmetric difference' consistently
  doc: revisions - name the left and right sides
  doc: show the actual left, right, and boundary marks
  doc: revisions: give headings for the two and three dot notations
  doc: revisions: extra clarification of <rev>^! notation effects
  doc: revisions: single vs multi-parent notation comparison
  doc: gitrevisions - use 'reachable' in page description
  doc: gitrevisions - clarify 'latter case' is revision walk
  doc: revisions  - define `reachable`
  doc: revisions - clarify reachability examples
  doc: revisions: show revision expansion in examples
  doc: revisions: sort examples and fix alignment of the unchanged

 Documentation/gitk.txt             |   2 +-
 Documentation/gitrevisions.txt     |   6 +-
 Documentation/pretty-formats.txt   |   2 +-
 Documentation/rev-list-options.txt |   4 +-
 Documentation/revisions.txt        | 121 +++++++++++++++++++++++--------------
 5 files changed, 84 insertions(+), 51 deletions(-)

-- 
2.9.0.windows.1


^ permalink raw reply	[flat|nested] 107+ messages in thread

* [PATCH v5 01/12] doc: use 'symmetric difference' consistently
  2016-08-11 23:03               ` [PATCH v5 " Philip Oakley
@ 2016-08-11 23:03                 ` Philip Oakley
  0 siblings, 0 replies; 107+ messages in thread
From: Philip Oakley @ 2016-08-11 23:03 UTC (permalink / raw)
  To: GitList, Junio C Hamano

Signed-off-by: Philip Oakley <philipoakley@iee.org>
---
unchanged
---
 Documentation/gitk.txt             | 2 +-
 Documentation/rev-list-options.txt | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/Documentation/gitk.txt b/Documentation/gitk.txt
index 6ade002..6c3eb15 100644
--- a/Documentation/gitk.txt
+++ b/Documentation/gitk.txt
@@ -70,7 +70,7 @@ linkgit:git-rev-list[1] for a complete list.
 
 --left-right::
 
-	Mark which side of a symmetric diff a commit is reachable
+	Mark which side of a symmetric difference a commit is reachable
 	from.  Commits from the left side are prefixed with a `<`
 	symbol and those from the right with a `>` symbol.
 
diff --git a/Documentation/rev-list-options.txt b/Documentation/rev-list-options.txt
index 4f009d4..6dc0bb0 100644
--- a/Documentation/rev-list-options.txt
+++ b/Documentation/rev-list-options.txt
@@ -225,7 +225,7 @@ excluded from the output.
 
 --left-only::
 --right-only::
-	List only commits on the respective side of a symmetric range,
+	List only commits on the respective side of a symmetric difference,
 	i.e. only those which would be marked `<` resp. `>` by
 	`--left-right`.
 +
@@ -766,7 +766,7 @@ ifdef::git-rev-list[]
 endif::git-rev-list[]
 
 --left-right::
-	Mark which side of a symmetric diff a commit is reachable from.
+	Mark which side of a symmetric difference a commit is reachable from.
 	Commits from the left side are prefixed with `<` and those from
 	the right with `>`.  If combined with `--boundary`, those
 	commits are prefixed with `-`.
-- 
2.9.0.windows.1


^ permalink raw reply related	[flat|nested] 107+ messages in thread

* [PATCH v5 00/12] Update git revisions
  2016-07-20 21:09             ` [PATCH v4 " Philip Oakley
                                 ` (10 preceding siblings ...)
  2016-08-11 23:03               ` [PATCH v5 " Philip Oakley
@ 2016-08-12  7:07               ` Philip Oakley
  2016-08-12  7:07                 ` [PATCH v5 01/12] doc: use 'symmetric difference' consistently Philip Oakley
                                   ` (12 more replies)
  11 siblings, 13 replies; 107+ messages in thread
From: Philip Oakley @ 2016-08-12  7:07 UTC (permalink / raw)
  To: GitList, Junio C Hamano

[2nd attempt : ISP troubles]

This has grown like topsy from a little two patch series that tried to
name the 2-dots notation [1] into this extended set of tweaks.

As documentation can be rather personal, I've split out each small change
so each can be individually justified.

Since V4, I've confirmed that the format breaking issue is that we cannot
quote code in headings in the man page layout - ultimately it's a docbook
decision, and follows the line of analysis Peff identified (see commentary
in the patch).

In addition the multi-parent notations have been clarified and extended.

Thus the old patch 4 has been split into three. The first three patches are
unchanged. The following 4 patches are also unchanged.

Finally, at the end an extra 2 patches are added to build up the examples by
including details of the notation expansions.

This updates po/range-doc (2016-07-20) 8 commits.

Hopefully my updated workflow will get the right patches to the right people.

[1] https://public-inbox.org/git/0648000B273C412AB7140AE959EBC99A%40PhilipOakley/

Philip Oakley (12):
  doc: use 'symmetric difference' consistently
  doc: revisions - name the left and right sides
  doc: show the actual left, right, and boundary marks
  doc: revisions: give headings for the two and three dot notations
  doc: revisions: extra clarification of <rev>^! notation effects
  doc: revisions: single vs multi-parent notation comparison
  doc: gitrevisions - use 'reachable' in page description
  doc: gitrevisions - clarify 'latter case' is revision walk
  doc: revisions  - define `reachable`
  doc: revisions - clarify reachability examples
  doc: revisions: show revision expansion in examples
  doc: revisions: sort examples and fix alignment of the unchanged

 Documentation/gitk.txt             |   2 +-
 Documentation/gitrevisions.txt     |   6 +-
 Documentation/pretty-formats.txt   |   2 +-
 Documentation/rev-list-options.txt |   4 +-
 Documentation/revisions.txt        | 121 +++++++++++++++++++++++--------------
 5 files changed, 84 insertions(+), 51 deletions(-)

-- 
2.9.0.windows.1


^ permalink raw reply	[flat|nested] 107+ messages in thread

* [PATCH v5 01/12] doc: use 'symmetric difference' consistently
  2016-08-12  7:07               ` [PATCH v5 00/12] Update git revisions Philip Oakley
@ 2016-08-12  7:07                 ` Philip Oakley
  2016-08-12  7:07                 ` [PATCH v5 02/12] doc: revisions - name the left and right sides Philip Oakley
                                   ` (11 subsequent siblings)
  12 siblings, 0 replies; 107+ messages in thread
From: Philip Oakley @ 2016-08-12  7:07 UTC (permalink / raw)
  To: GitList, Junio C Hamano

Signed-off-by: Philip Oakley <philipoakley@iee.org>
---
unchanged
---
 Documentation/gitk.txt             | 2 +-
 Documentation/rev-list-options.txt | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/Documentation/gitk.txt b/Documentation/gitk.txt
index 6ade002..6c3eb15 100644
--- a/Documentation/gitk.txt
+++ b/Documentation/gitk.txt
@@ -70,7 +70,7 @@ linkgit:git-rev-list[1] for a complete list.
 
 --left-right::
 
-	Mark which side of a symmetric diff a commit is reachable
+	Mark which side of a symmetric difference a commit is reachable
 	from.  Commits from the left side are prefixed with a `<`
 	symbol and those from the right with a `>` symbol.
 
diff --git a/Documentation/rev-list-options.txt b/Documentation/rev-list-options.txt
index 4f009d4..6dc0bb0 100644
--- a/Documentation/rev-list-options.txt
+++ b/Documentation/rev-list-options.txt
@@ -225,7 +225,7 @@ excluded from the output.
 
 --left-only::
 --right-only::
-	List only commits on the respective side of a symmetric range,
+	List only commits on the respective side of a symmetric difference,
 	i.e. only those which would be marked `<` resp. `>` by
 	`--left-right`.
 +
@@ -766,7 +766,7 @@ ifdef::git-rev-list[]
 endif::git-rev-list[]
 
 --left-right::
-	Mark which side of a symmetric diff a commit is reachable from.
+	Mark which side of a symmetric difference a commit is reachable from.
 	Commits from the left side are prefixed with `<` and those from
 	the right with `>`.  If combined with `--boundary`, those
 	commits are prefixed with `-`.
-- 
2.9.0.windows.1


^ permalink raw reply related	[flat|nested] 107+ messages in thread

* [PATCH v5 02/12] doc: revisions - name the left and right sides
  2016-08-12  7:07               ` [PATCH v5 00/12] Update git revisions Philip Oakley
  2016-08-12  7:07                 ` [PATCH v5 01/12] doc: use 'symmetric difference' consistently Philip Oakley
@ 2016-08-12  7:07                 ` Philip Oakley
  2016-08-12  7:07                 ` [PATCH v5 03/12] doc: show the actual left, right, and boundary marks Philip Oakley
                                   ` (10 subsequent siblings)
  12 siblings, 0 replies; 107+ messages in thread
From: Philip Oakley @ 2016-08-12  7:07 UTC (permalink / raw)
  To: GitList, Junio C Hamano

The terms left and right side originate from the symmetric
difference. Name them there.

Signed-off-by: Philip Oakley <philipoakley@iee.org>
---
unchanged
---
 Documentation/revisions.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt
index 19314e3..6e9cd41 100644
--- a/Documentation/revisions.txt
+++ b/Documentation/revisions.txt
@@ -256,7 +256,7 @@ 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' or 'r2' but not from both.
+'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.
 For example, 'origin..' is a shorthand for 'origin..HEAD' and asks "What
-- 
2.9.0.windows.1


^ permalink raw reply related	[flat|nested] 107+ messages in thread

* [PATCH v5 03/12] doc: show the actual left, right, and boundary marks
  2016-08-12  7:07               ` [PATCH v5 00/12] Update git revisions Philip Oakley
  2016-08-12  7:07                 ` [PATCH v5 01/12] doc: use 'symmetric difference' consistently Philip Oakley
  2016-08-12  7:07                 ` [PATCH v5 02/12] doc: revisions - name the left and right sides Philip Oakley
@ 2016-08-12  7:07                 ` Philip Oakley
  2016-08-12  7:07                 ` [PATCH v5 04/12] doc: revisions: give headings for the two and three dot notations Philip Oakley
                                   ` (9 subsequent siblings)
  12 siblings, 0 replies; 107+ messages in thread
From: Philip Oakley @ 2016-08-12  7:07 UTC (permalink / raw)
  To: GitList, Junio C Hamano

Signed-off-by: Philip Oakley <philipoakley@iee.org>
---
Found while checking the 'symmetric difference' documentation
Unchanged from v4
---
 Documentation/pretty-formats.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Documentation/pretty-formats.txt b/Documentation/pretty-formats.txt
index 29b19b9..10719e1 100644
--- a/Documentation/pretty-formats.txt
+++ b/Documentation/pretty-formats.txt
@@ -166,7 +166,7 @@ endif::git-rev-list[]
   respecting the `auto` settings of the former if we are going to a
   terminal). `auto` alone (i.e. `%C(auto)`) will turn on auto coloring
   on the next placeholders until the color is switched again.
-- '%m': left, right or boundary mark
+- '%m': left (`<`), right (`>`) or boundary (`-`) mark
 - '%n': newline
 - '%%': a raw '%'
 - '%x00': print a byte from a hex code
-- 
2.9.0.windows.1


^ permalink raw reply related	[flat|nested] 107+ messages in thread

* [PATCH v5 04/12] doc: revisions: give headings for the two and three dot notations
  2016-08-12  7:07               ` [PATCH v5 00/12] Update git revisions Philip Oakley
                                   ` (2 preceding siblings ...)
  2016-08-12  7:07                 ` [PATCH v5 03/12] doc: show the actual left, right, and boundary marks Philip Oakley
@ 2016-08-12  7:07                 ` Philip Oakley
  2016-08-12  7:10                   ` Jeff King
  2016-08-12 14:37                   ` Marc Branchaud
  2016-08-12  7:07                 ` [PATCH v5 05/12] doc: revisions: extra clarification of <rev>^! notation effects Philip Oakley
                                   ` (8 subsequent siblings)
  12 siblings, 2 replies; 107+ messages in thread
From: Philip Oakley @ 2016-08-12  7:07 UTC (permalink / raw)
  To: GitList, Junio C Hamano; +Cc: Marc Branchaud, Jeff King

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).

We do not quote the notation within the headings as the asciidoc ->
docbook -> groff man viewer toolchain, particularly the docbook-groff
step, does not cope with two font changes, failing to return the heading
font to bold after the quotation of the notation.

Signed-off-by: Philip Oakley <philipoakley@iee.org>
---
Cc: Marc Branchaud <marcnarc@xiplink.com>
Cc: Jeff King <peff@peff.net>

ref email

Jeff King wrote on 12 July 2016 23:12
> On Tue, Jul 12, 2016 at 10:41:35PM +0100, Philip Oakley wrote:
> > Marc Branchaud <marcnarc@xiplink.com> 12 July 2016 14:44 noted
> > > +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.
>
> Which doc package is that with? It had formatted OK for the html web pages.

I get the same with:

  make gitrevisions.7
  man -l gitrevisions.7

Asciidoc 8.6.9, docbook-xsl 4.5 if it matters.

Rendering single-quotes as underline is normal in this case (though it's
not great for punctuation like this, as it kind of blends with the dots;
I know we use it elsewhere in this document, though).  The failure to
continue the bold through the end of line looks like a bug, though.

The generated XML (from asciidoc) looks reasonable:

  <title>The <emphasis>..</emphasis> (two-dot) range notation</title>

The roff looks like:

  .SS "The \fI\&.\&.\fR (two\-dot) range notation"

The "\fR" switches us back to "Roman" from italics, which is presumably
the problem. We really want to say "switch back what we were using
before \fI".

Switching it to "\fP" fixes it, but it's not clear to me if that's
actually portable, or a groff-ism. I don't know roff very well and
documentation seems to be quite hard to find. So it's either a bug in
docbook, or an intentional decision they've made because roff can't
portably do better. I'm not sure which.

-Peff

The docbook folks have confirmed that \fP would only work across one
level, so they cannot use it for their XSLT conversion which must be
multi-level, so they always return to the default font.
-Philip
---
 Documentation/revisions.txt | 58 ++++++++++++++++++++++++++++-----------------
 1 file changed, 36 insertions(+), 22 deletions(-)

diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt
index 6e9cd41..3da0083 100644
--- a/Documentation/revisions.txt
+++ b/Documentation/revisions.txt
@@ -242,35 +242,49 @@ 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.
 
-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'.
-
-This 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'.
-
-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.
+Commit Exclusions
+~~~~~~~~~~~~~~~~~
+
+'{caret}<rev>' (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'.
+
+Dotted Range Notations
+~~~~~~~~~~~~~~~~~~~~~~
+
+The '..' (two-dot) Range Notation::
+ 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 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.
 
-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.
+Other <rev>{caret} Parent Shorthand Notations
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Two other shorthands exist, particularly useful for merge commits,
+for naming a set that is formed by a commit and its parent commits.
 
-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
+----------------------
 
 '<rev>'::
 	Include commits that are reachable from (i.e. ancestors of)
-- 
2.9.0.windows.1


^ permalink raw reply related	[flat|nested] 107+ messages in thread

* [PATCH v5 05/12] doc: revisions: extra clarification of <rev>^! notation effects
  2016-08-12  7:07               ` [PATCH v5 00/12] Update git revisions Philip Oakley
                                   ` (3 preceding siblings ...)
  2016-08-12  7:07                 ` [PATCH v5 04/12] doc: revisions: give headings for the two and three dot notations Philip Oakley
@ 2016-08-12  7:07                 ` Philip Oakley
  2016-08-12 14:39                   ` Marc Branchaud
  2016-08-12  7:07                 ` [PATCH v5 06/12] doc: revisions: single vs multi-parent notation comparison Philip Oakley
                                   ` (7 subsequent siblings)
  12 siblings, 1 reply; 107+ messages in thread
From: Philip Oakley @ 2016-08-12  7:07 UTC (permalink / raw)
  To: GitList, Junio C Hamano; +Cc: Jakub Narębski

Signed-off-by: Philip Oakley <philipoakley@iee.org>
---
new
Cc: Jakub Narębski <jnareb@gmail.com>
https://public-inbox.org/git/578E4F4A.2020708%40gmail.com/
---
 Documentation/revisions.txt | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt
index 3da0083..0b5044d 100644
--- a/Documentation/revisions.txt
+++ b/Documentation/revisions.txt
@@ -281,7 +281,8 @@ for naming a set that is formed by a commit and its parent commits.
 
 The 'r1{caret}@' notation means all parents of 'r1'.
 
-'r1{caret}!' includes commit 'r1' but excludes all of its parents.
+'r1{caret}!' notation includes commit 'r1' but excludes all of its parents.
+This is the single commit 'r1', if standalone.
 
 Revision Range Summary
 ----------------------
-- 
2.9.0.windows.1


^ permalink raw reply related	[flat|nested] 107+ messages in thread

* [PATCH v5 06/12] doc: revisions: single vs multi-parent notation comparison
  2016-08-12  7:07               ` [PATCH v5 00/12] Update git revisions Philip Oakley
                                   ` (4 preceding siblings ...)
  2016-08-12  7:07                 ` [PATCH v5 05/12] doc: revisions: extra clarification of <rev>^! notation effects Philip Oakley
@ 2016-08-12  7:07                 ` Philip Oakley
  2016-08-12 14:40                   ` Marc Branchaud
  2016-08-12  7:07                 ` [PATCH v5 07/12] doc: gitrevisions - use 'reachable' in page description Philip Oakley
                                   ` (6 subsequent siblings)
  12 siblings, 1 reply; 107+ messages in thread
From: Philip Oakley @ 2016-08-12  7:07 UTC (permalink / raw)
  To: GitList, Junio C Hamano

Signed-off-by: Philip Oakley <philipoakley@iee.org>
---
new
Junio's final comment https://public-inbox.org/git/xmqqwpkq6b4d.fsf%40gitster.mtv.corp.google.com/
---
 Documentation/revisions.txt | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt
index 0b5044d..934d071 100644
--- a/Documentation/revisions.txt
+++ b/Documentation/revisions.txt
@@ -284,6 +284,10 @@ The 'r1{caret}@' notation means all parents of 'r1'.
 'r1{caret}!' notation includes commit 'r1' but excludes all of its parents.
 This is the single commit 'r1', if standalone.
 
+While '<rev>{caret}<n>' was about specifying a single commit parent, these
+two notations consider all its parents. For example you can say
+'HEAD{caret}2^@', however you cannot say 'HEAD{caret}@{caret}2'.
+
 Revision Range Summary
 ----------------------
 
-- 
2.9.0.windows.1


^ permalink raw reply related	[flat|nested] 107+ messages in thread

* [PATCH v5 07/12] doc: gitrevisions - use 'reachable' in page description
  2016-08-12  7:07               ` [PATCH v5 00/12] Update git revisions Philip Oakley
                                   ` (5 preceding siblings ...)
  2016-08-12  7:07                 ` [PATCH v5 06/12] doc: revisions: single vs multi-parent notation comparison Philip Oakley
@ 2016-08-12  7:07                 ` Philip Oakley
  2016-08-12  7:07                 ` [PATCH v5 08/12] doc: gitrevisions - clarify 'latter case' is revision walk Philip Oakley
                                   ` (5 subsequent siblings)
  12 siblings, 0 replies; 107+ messages in thread
From: Philip Oakley @ 2016-08-12  7:07 UTC (permalink / raw)
  To: GitList, Junio C Hamano

Signed-off-by: Philip Oakley <philipoakley@iee.org>
---
unchanged
---
 Documentation/gitrevisions.txt | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Documentation/gitrevisions.txt b/Documentation/gitrevisions.txt
index e903eb7..33039c6 100644
--- a/Documentation/gitrevisions.txt
+++ b/Documentation/gitrevisions.txt
@@ -15,8 +15,8 @@ DESCRIPTION
 
 Many Git commands take revision parameters as arguments. Depending on
 the command, they denote a specific commit or, for commands which
-walk the revision graph (such as linkgit:git-log[1]), all commits which can
-be reached from that commit. In the latter case one can also specify a
+walk the revision graph (such as linkgit:git-log[1]), all commits which are
+reachable from that commit. In the latter case one can also specify a
 range of revisions explicitly.
 
 In addition, some Git commands (such as linkgit:git-show[1]) also take
-- 
2.9.0.windows.1


^ permalink raw reply related	[flat|nested] 107+ messages in thread

* [PATCH v5 08/12] doc: gitrevisions - clarify 'latter case' is revision walk
  2016-08-12  7:07               ` [PATCH v5 00/12] Update git revisions Philip Oakley
                                   ` (6 preceding siblings ...)
  2016-08-12  7:07                 ` [PATCH v5 07/12] doc: gitrevisions - use 'reachable' in page description Philip Oakley
@ 2016-08-12  7:07                 ` Philip Oakley
  2016-08-12  7:07                 ` [PATCH v5 09/12] doc: revisions - define `reachable` Philip Oakley
                                   ` (4 subsequent siblings)
  12 siblings, 0 replies; 107+ messages in thread
From: Philip Oakley @ 2016-08-12  7:07 UTC (permalink / raw)
  To: GitList, Junio C Hamano

The prior sentence has too many clauses for easy parsing.
Replace 'the latter case' with a direct quote.

Signed-off-by: Philip Oakley <philipoakley@iee.org>
---
unchanged
---
 Documentation/gitrevisions.txt | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Documentation/gitrevisions.txt b/Documentation/gitrevisions.txt
index 33039c6..27dec5b 100644
--- a/Documentation/gitrevisions.txt
+++ b/Documentation/gitrevisions.txt
@@ -16,8 +16,8 @@ DESCRIPTION
 Many Git commands take revision parameters as arguments. Depending on
 the command, they denote a specific commit or, for commands which
 walk the revision graph (such as linkgit:git-log[1]), all commits which are
-reachable from that commit. In the latter case one can also specify a
-range of revisions explicitly.
+reachable from that commit. For commands that walk the revision graph one can
+also specify a range of revisions explicitly.
 
 In addition, some Git commands (such as linkgit:git-show[1]) also take
 revision parameters which denote other objects than commits, e.g. blobs
-- 
2.9.0.windows.1


^ permalink raw reply related	[flat|nested] 107+ messages in thread

* [PATCH v5 09/12] doc: revisions  - define `reachable`
  2016-08-12  7:07               ` [PATCH v5 00/12] Update git revisions Philip Oakley
                                   ` (7 preceding siblings ...)
  2016-08-12  7:07                 ` [PATCH v5 08/12] doc: gitrevisions - clarify 'latter case' is revision walk Philip Oakley
@ 2016-08-12  7:07                 ` Philip Oakley
  2016-08-28 13:01                   ` Jakub Narębski
  2016-08-12  7:07                 ` [PATCH v5 10/12] doc: revisions - clarify reachability examples Philip Oakley
                                   ` (3 subsequent siblings)
  12 siblings, 1 reply; 107+ messages in thread
From: Philip Oakley @ 2016-08-12  7:07 UTC (permalink / raw)
  To: GitList, Junio C Hamano

Do not self-define `reachable`, which can lead to misunderstanding.
Instead define `reachability` explictly.

Signed-off-by: Philip Oakley <philipoakley@iee.org>
---
unchanged
---
 Documentation/revisions.txt | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt
index 934d071..238be45 100644
--- a/Documentation/revisions.txt
+++ b/Documentation/revisions.txt
@@ -237,10 +237,16 @@ SPECIFYING RANGES
 -----------------
 
 History traversing commands such as `git log` operate on a set
-of commits, not just a single commit.  To these commands,
-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.
+of commits, not just a single commit.
+
+For these commands,
+specifying a single revision, using the notation described in the
+previous section, means the set of commits `reachable` from the given
+commit.
+
+A commit's reachable set is the commit itself and the commits in
+its ancestry chain.
+
 
 Commit Exclusions
 ~~~~~~~~~~~~~~~~~
-- 
2.9.0.windows.1


^ permalink raw reply related	[flat|nested] 107+ messages in thread

* [PATCH v5 10/12] doc: revisions - clarify reachability examples
  2016-08-12  7:07               ` [PATCH v5 00/12] Update git revisions Philip Oakley
                                   ` (8 preceding siblings ...)
  2016-08-12  7:07                 ` [PATCH v5 09/12] doc: revisions - define `reachable` Philip Oakley
@ 2016-08-12  7:07                 ` Philip Oakley
  2016-08-12  7:07                 ` [PATCH v5 11/12] doc: revisions: show revision expansion in examples Philip Oakley
                                   ` (2 subsequent siblings)
  12 siblings, 0 replies; 107+ messages in thread
From: Philip Oakley @ 2016-08-12  7:07 UTC (permalink / raw)
  To: GitList, Junio C Hamano

 For the r1..r2 case, the exclusion of r1, rather than inclusion of r2,
 would be the unexpected case in natural language for a simple linear
 development, i.e. start..end excludes start.

Signed-off-by: Philip Oakley <philipoakley@iee.org>
---
unchanged
---
 Documentation/revisions.txt | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt
index 238be45..70864d5 100644
--- a/Documentation/revisions.txt
+++ b/Documentation/revisions.txt
@@ -254,7 +254,8 @@ Commit Exclusions
 '{caret}<rev>' (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'.
+ from 'r2' but exclude the ones reachable from 'r1' (i.e. 'r1' and
+ its ancestors).
 
 Dotted Range Notations
 ~~~~~~~~~~~~~~~~~~~~~~
@@ -298,12 +299,12 @@ Revision Range Summary
 ----------------------
 
 '<rev>'::
-	Include commits that are reachable from (i.e. ancestors of)
-	<rev>.
+	Include commits that are reachable from <rev> (i.e. <rev> and its
+	ancestors).
 
 '{caret}<rev>'::
-	Exclude commits that are reachable from (i.e. ancestors of)
-	<rev>.
+	Exclude commits that are reachable from <rev> (i.e. <rev> and its
+	ancestors).
 
 '<rev1>..<rev2>'::
 	Include commits that are reachable from <rev2> but exclude
-- 
2.9.0.windows.1


^ permalink raw reply related	[flat|nested] 107+ messages in thread

* [PATCH v5 11/12] doc: revisions: show revision expansion in examples
  2016-08-12  7:07               ` [PATCH v5 00/12] Update git revisions Philip Oakley
                                   ` (9 preceding siblings ...)
  2016-08-12  7:07                 ` [PATCH v5 10/12] doc: revisions - clarify reachability examples Philip Oakley
@ 2016-08-12  7:07                 ` Philip Oakley
  2016-08-12 15:22                   ` Marc Branchaud
  2016-08-12  7:07                 ` [PATCH v5 12/12] doc: revisions: sort examples and fix alignment of the unchanged Philip Oakley
  2016-08-12 15:28                 ` [PATCH v5 00/12] Update git revisions Marc Branchaud
  12 siblings, 1 reply; 107+ messages in thread
From: Philip Oakley @ 2016-08-12  7:07 UTC (permalink / raw)
  To: GitList, Junio C Hamano; +Cc: Jakub Narębski

The revisions examples show the revison arguments and the selected
commits, but do not show the intermediate step of the expansion of
the special 'range' notations. Extend the examples, including an
all-parents multi-parent merge commit example.

Sort the examples and fix the alignment for those unaffected
in the next commit.

Signed-off-by: Philip Oakley <philipoakley@iee.org>
---
new
Cc: Jakub Narębski <jnareb@gmail.com>
---
 Documentation/revisions.txt | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt
index 70864d5..ac7dd8e 100644
--- a/Documentation/revisions.txt
+++ b/Documentation/revisions.txt
@@ -326,16 +326,23 @@ Revision Range Summary
   as giving commit '<rev>' and then all its parents prefixed with
   '{caret}' to exclude them (and their ancestors).
 
-Here are a handful of examples:
+Here are a handful of examples using the Loeliger illustration above:
 
+   Args   Expansion       Selection
    D                G H D
    D F              G H I J D F
    ^G D             H D
    ^D B             E I J F B
-   B..C             C
-   B...C            G H D E B C
+   B..C   = ^B C          C
+   B...C  = B ^F C        G H D E B C
    ^D B C           E I J F B C
    C                I J F C
-   C^@              I J F
-   C^!              C
-   F^! D            G H D F
+   C^@    = C^1
+          = F             I J F
+   B^@    = B^1 B^2 B^3
+          = D E F         D G H E F I J
+   C^!    = C ^C^1
+          = C ^F          C
+   B^! = B ^B^1 ^B^2 ^B^3
+       = B ^D ^E ^F       B
+   F^! D  = F ^I ^J D     G H D F
-- 
2.9.0.windows.1


^ permalink raw reply related	[flat|nested] 107+ messages in thread

* [PATCH v5 12/12] doc: revisions: sort examples and fix alignment of the unchanged
  2016-08-12  7:07               ` [PATCH v5 00/12] Update git revisions Philip Oakley
                                   ` (10 preceding siblings ...)
  2016-08-12  7:07                 ` [PATCH v5 11/12] doc: revisions: show revision expansion in examples Philip Oakley
@ 2016-08-12  7:07                 ` Philip Oakley
  2016-08-12 15:28                 ` [PATCH v5 00/12] Update git revisions Marc Branchaud
  12 siblings, 0 replies; 107+ messages in thread
From: Philip Oakley @ 2016-08-12  7:07 UTC (permalink / raw)
  To: GitList, Junio C Hamano

The previous commit adjusted the column alignment for revision
examples which show expansion. Fix the unchanged examples and sort
those that show expansions to the end of the list.

Signed-off-by: Philip Oakley <philipoakley@iee.org>
---
new
---
 Documentation/revisions.txt | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt
index ac7dd8e..8d65986 100644
--- a/Documentation/revisions.txt
+++ b/Documentation/revisions.txt
@@ -329,14 +329,14 @@ Revision Range Summary
 Here are a handful of examples using the Loeliger illustration above:
 
    Args   Expansion       Selection
-   D                G H D
-   D F              G H I J D F
-   ^G D             H D
-   ^D B             E I J F B
+   D                      G H D
+   D F                    G H I J D F
+   ^G D                   H D
+   ^D B                   E I J F B
+   ^D B C                 E I J F B C
+   C                      I J F C
    B..C   = ^B C          C
    B...C  = B ^F C        G H D E B C
-   ^D B C           E I J F B C
-   C                I J F C
    C^@    = C^1
           = F             I J F
    B^@    = B^1 B^2 B^3
-- 
2.9.0.windows.1


^ permalink raw reply related	[flat|nested] 107+ messages in thread

* Re: [PATCH v5 04/12] doc: revisions: give headings for the two and three dot notations
  2016-08-12  7:07                 ` [PATCH v5 04/12] doc: revisions: give headings for the two and three dot notations Philip Oakley
@ 2016-08-12  7:10                   ` Jeff King
  2016-08-12 14:37                   ` Marc Branchaud
  1 sibling, 0 replies; 107+ messages in thread
From: Jeff King @ 2016-08-12  7:10 UTC (permalink / raw)
  To: Philip Oakley; +Cc: GitList, Junio C Hamano, Marc Branchaud

On Fri, Aug 12, 2016 at 08:07:41AM +0100, Philip Oakley wrote:

> We do not quote the notation within the headings as the asciidoc ->
> docbook -> groff man viewer toolchain, particularly the docbook-groff
> step, does not cope with two font changes, failing to return the heading
> font to bold after the quotation of the notation.
> [...]
> The docbook folks have confirmed that \fP would only work across one
> level, so they cannot use it for their XSLT conversion which must be
> multi-level, so they always return to the default font.

Thanks for digging into the root cause. I think your workaround (to
avoid quoted bits in headers) is reasonable, and a rule we can keep in
mind for future patches.

-Peff

^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: [PATCH v5 04/12] doc: revisions: give headings for the two and three dot notations
  2016-08-12  7:07                 ` [PATCH v5 04/12] doc: revisions: give headings for the two and three dot notations Philip Oakley
  2016-08-12  7:10                   ` Jeff King
@ 2016-08-12 14:37                   ` Marc Branchaud
  1 sibling, 0 replies; 107+ messages in thread
From: Marc Branchaud @ 2016-08-12 14:37 UTC (permalink / raw)
  To: Philip Oakley, GitList, Junio C Hamano; +Cc: Jeff King

On 2016-08-12 03:07 AM, Philip Oakley wrote:
> 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).
>
> We do not quote the notation within the headings as the asciidoc ->
> docbook -> groff man viewer toolchain, particularly the docbook-groff
> step, does not cope with two font changes, failing to return the heading
> font to bold after the quotation of the notation.

Looks good --thanks!

		M.


^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: [PATCH v5 05/12] doc: revisions: extra clarification of <rev>^! notation effects
  2016-08-12  7:07                 ` [PATCH v5 05/12] doc: revisions: extra clarification of <rev>^! notation effects Philip Oakley
@ 2016-08-12 14:39                   ` Marc Branchaud
  2016-08-12 22:17                     ` Philip Oakley
  0 siblings, 1 reply; 107+ messages in thread
From: Marc Branchaud @ 2016-08-12 14:39 UTC (permalink / raw)
  To: Philip Oakley, GitList, Junio C Hamano; +Cc: Jakub Narębski

On 2016-08-12 03:07 AM, Philip Oakley wrote:
> Signed-off-by: Philip Oakley <philipoakley@iee.org>
> ---
> new
> Cc: Jakub Narębski <jnareb@gmail.com>
> https://public-inbox.org/git/578E4F4A.2020708%40gmail.com/
> ---
>  Documentation/revisions.txt | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt
> index 3da0083..0b5044d 100644
> --- a/Documentation/revisions.txt
> +++ b/Documentation/revisions.txt
> @@ -281,7 +281,8 @@ for naming a set that is formed by a commit and its parent commits.
>
>  The 'r1{caret}@' notation means all parents of 'r1'.
>
> -'r1{caret}!' includes commit 'r1' but excludes all of its parents.
> +'r1{caret}!' notation includes commit 'r1' but excludes all of its parents.

This sentence should start with "The".

> +This is the single commit 'r1', if standalone.

That reads awkwardly to me.  Perhaps

	By itself, this notation denotes the single commit 'r1'.

?

		M.


^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: [PATCH v5 06/12] doc: revisions: single vs multi-parent notation comparison
  2016-08-12  7:07                 ` [PATCH v5 06/12] doc: revisions: single vs multi-parent notation comparison Philip Oakley
@ 2016-08-12 14:40                   ` Marc Branchaud
  2016-08-12 22:23                     ` Philip Oakley
  0 siblings, 1 reply; 107+ messages in thread
From: Marc Branchaud @ 2016-08-12 14:40 UTC (permalink / raw)
  To: Philip Oakley, GitList, Junio C Hamano

On 2016-08-12 03:07 AM, Philip Oakley wrote:
> Signed-off-by: Philip Oakley <philipoakley@iee.org>
> ---
> new
> Junio's final comment https://public-inbox.org/git/xmqqwpkq6b4d.fsf%40gitster.mtv.corp.google.com/
> ---
>  Documentation/revisions.txt | 4 ++++
>  1 file changed, 4 insertions(+)
>
> diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt
> index 0b5044d..934d071 100644
> --- a/Documentation/revisions.txt
> +++ b/Documentation/revisions.txt
> @@ -284,6 +284,10 @@ The 'r1{caret}@' notation means all parents of 'r1'.
>  'r1{caret}!' notation includes commit 'r1' but excludes all of its parents.
>  This is the single commit 'r1', if standalone.
>
> +While '<rev>{caret}<n>' was about specifying a single commit parent, these
> +two notations consider all its parents. For example you can say
> +'HEAD{caret}2^@', however you cannot say 'HEAD{caret}@{caret}2'.

That ^ should be {caret}, right?

		M.


^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: [PATCH v5 11/12] doc: revisions: show revision expansion in examples
  2016-08-12  7:07                 ` [PATCH v5 11/12] doc: revisions: show revision expansion in examples Philip Oakley
@ 2016-08-12 15:22                   ` Marc Branchaud
  2016-08-12 22:45                     ` Philip Oakley
  0 siblings, 1 reply; 107+ messages in thread
From: Marc Branchaud @ 2016-08-12 15:22 UTC (permalink / raw)
  To: Philip Oakley, GitList, Junio C Hamano; +Cc: Jakub Narębski

On 2016-08-12 03:07 AM, Philip Oakley wrote:
> The revisions examples show the revison arguments and the selected
> commits, but do not show the intermediate step of the expansion of
> the special 'range' notations. Extend the examples, including an
> all-parents multi-parent merge commit example.
>
> Sort the examples and fix the alignment for those unaffected
> in the next commit.
>
> Signed-off-by: Philip Oakley <philipoakley@iee.org>
> ---
> new
> Cc: Jakub Narębski <jnareb@gmail.com>
> ---
>  Documentation/revisions.txt | 19 +++++++++++++------
>  1 file changed, 13 insertions(+), 6 deletions(-)
>
> diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt
> index 70864d5..ac7dd8e 100644
> --- a/Documentation/revisions.txt
> +++ b/Documentation/revisions.txt
> @@ -326,16 +326,23 @@ Revision Range Summary
>    as giving commit '<rev>' and then all its parents prefixed with
>    '{caret}' to exclude them (and their ancestors).
>
> -Here are a handful of examples:
> +Here are a handful of examples using the Loeliger illustration above:
>
> +   Args   Expansion       Selection

I think "Result" would be better than "Selection" here.

Also, shouldn't all the ^ in these examples be {caret}?  (I likely just 
don't understand the rationale for using {caret} in some places and ^ in 
others...)

>     D                G H D
>     D F              G H I J D F
>     ^G D             H D
>     ^D B             E I J F B
> -   B..C             C
> -   B...C            G H D E B C
> +   B..C   = ^B C          C
> +   B...C  = B ^F C        G H D E B C
>     ^D B C           E I J F B C
>     C                I J F C
> -   C^@              I J F
> -   C^!              C
> -   F^! D            G H D F
> +   C^@    = C^1

I have a mixed reaction to showing this "C^1" expansion, and the "B^1 
B^2 B^3" one as well.  I see the appeal of showing the parent notation, 
but really that was already explained to death in the first section. 
Here it's distracting.  I think it's clearer for the reader to remove 
these expansions and just use the node names from the illustration.

> +          = F             I J F
> +   B^@    = B^1 B^2 B^3
> +          = D E F         D G H E F I J
> +   C^!    = C ^C^1

I think this expansion might be better expressed as "C ^C^@".  It'll be 
the same for "B^! = B ^B^@" as well, which demonstrates a nice 
consistency and also helps to emphasize the meaning of the ^@ notation.

> +          = C ^F          C
> +   B^! = B ^B^1 ^B^2 ^B^3
> +       = B ^D ^E ^F       B

The layout of these last two lines doesn't match the others.  They 
should be:

    B^!    = B ^B^1 ^B^2   ^B^3
           = B ^D ^E ^F    B

I see that the next patch fixes the layout of the unchanged examples, 
but it leaves these two unaligned.

		M.


^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: [PATCH v5 00/12] Update git revisions
  2016-08-12  7:07               ` [PATCH v5 00/12] Update git revisions Philip Oakley
                                   ` (11 preceding siblings ...)
  2016-08-12  7:07                 ` [PATCH v5 12/12] doc: revisions: sort examples and fix alignment of the unchanged Philip Oakley
@ 2016-08-12 15:28                 ` Marc Branchaud
  2016-08-12 19:20                   ` Philip Oakley
  12 siblings, 1 reply; 107+ messages in thread
From: Marc Branchaud @ 2016-08-12 15:28 UTC (permalink / raw)
  To: Philip Oakley, GitList, Junio C Hamano

On 2016-08-12 03:07 AM, Philip Oakley wrote:
> [2nd attempt : ISP troubles]
>
> This has grown like topsy from a little two patch series that tried to
> name the 2-dots notation [1] into this extended set of tweaks.

Honestly, I start just trying point out something concrete, like 
misrendered headers, but then I figure since I'm sending a review 
comment anyway I might as well go in-depth on the rest of the patch.

I think I'm sticking to substantive comments, but if I'm getting too 
picky please just swat me down!

		M.


^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: [PATCH v5 00/12] Update git revisions
  2016-08-12 15:28                 ` [PATCH v5 00/12] Update git revisions Marc Branchaud
@ 2016-08-12 19:20                   ` Philip Oakley
  2016-08-12 21:27                     ` Junio C Hamano
  0 siblings, 1 reply; 107+ messages in thread
From: Philip Oakley @ 2016-08-12 19:20 UTC (permalink / raw)
  To: GitList, Junio C Hamano, Marc Branchaud

From: "Marc Branchaud" <marcnarc@xiplink.com>
> On 2016-08-12 03:07 AM, Philip Oakley wrote:
>> [2nd attempt : ISP troubles]
>>
>> This has grown like topsy from a little two patch series that tried to
>> name the 2-dots notation [1] into this extended set of tweaks.
>
> Honestly, I start just trying point out something concrete, like 
> misrendered headers, but then I figure since I'm sending a review comment 
> anyway I might as well go in-depth on the rest of the patch.
>
> I think I'm sticking to substantive comments, but if I'm getting too picky 
> please just swat me down!

No, that's fine. It's important to at least review these points.

I thought I'd picked up all the issues, but it looks like I missed at least 
one.

The caret thing has a bit of history - see 87c6aeb4efdd43559

It looks like its the two carets on a line mean superscript (Unconstrained 
quotes) and that maybe the issue.

Then it looks like {caret} does a replacement, though I can't find that in 
the asciidoc user guide.


I don't quite understand why the ^ symbols work for the Loliger examples, 
but hey ho, it's good they do...

I'll work on the tweaks, though it'll probably be tomorrow as we have 
visitors.

--
Philip 


^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: [PATCH v5 00/12] Update git revisions
  2016-08-12 19:20                   ` Philip Oakley
@ 2016-08-12 21:27                     ` Junio C Hamano
  0 siblings, 0 replies; 107+ messages in thread
From: Junio C Hamano @ 2016-08-12 21:27 UTC (permalink / raw)
  To: Philip Oakley; +Cc: GitList, Marc Branchaud

"Philip Oakley" <philipoakley@iee.org> writes:

> I'll work on the tweaks, though it'll probably be tomorrow as we have
> visitors.

Thank you for working on this; Marc, thank you for many good review
comments.

^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: [PATCH v5 05/12] doc: revisions: extra clarification of <rev>^! notation effects
  2016-08-12 14:39                   ` Marc Branchaud
@ 2016-08-12 22:17                     ` Philip Oakley
  0 siblings, 0 replies; 107+ messages in thread
From: Philip Oakley @ 2016-08-12 22:17 UTC (permalink / raw)
  To: GitList, Junio C Hamano, Marc Branchaud; +Cc: Jakub Narębski

From: "Marc Branchaud" <marcnarc@xiplink.com>
> On 2016-08-12 03:07 AM, Philip Oakley wrote:
>> Signed-off-by: Philip Oakley <philipoakley@iee.org>
>> ---
>> new
>> Cc: Jakub Narębski <jnareb@gmail.com>
>> https://public-inbox.org/git/578E4F4A.2020708%40gmail.com/
>> ---
>>  Documentation/revisions.txt | 3 ++-
>>  1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt
>> index 3da0083..0b5044d 100644
>> --- a/Documentation/revisions.txt
>> +++ b/Documentation/revisions.txt
>> @@ -281,7 +281,8 @@ for naming a set that is formed by a commit and its 
>> parent commits.
>>
>>  The 'r1{caret}@' notation means all parents of 'r1'.
>>
>> -'r1{caret}!' includes commit 'r1' but excludes all of its parents.
>> +'r1{caret}!' notation includes commit 'r1' but excludes all of its 
>> parents.
>
> This sentence should start with "The".

Accepted. I'd simply split the the previous text, so the nice run-on effect 
it initially had has been lost.

>
>> +This is the single commit 'r1', if standalone.
>
> That reads awkwardly to me.  Perhaps
>
>        By itself, this notation denotes the single commit 'r1'.

Like it. I'd toyed wth quite a few variants. It's jsut a case of finding the 
nicest one;-)

>
> ?
>
> M.
>
> --

Philip 


^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: [PATCH v5 06/12] doc: revisions: single vs multi-parent notation comparison
  2016-08-12 14:40                   ` Marc Branchaud
@ 2016-08-12 22:23                     ` Philip Oakley
  0 siblings, 0 replies; 107+ messages in thread
From: Philip Oakley @ 2016-08-12 22:23 UTC (permalink / raw)
  To: GitList, Junio C Hamano, Marc Branchaud

From: "Marc Branchaud" <marcnarc@xiplink.com>
> On 2016-08-12 03:07 AM, Philip Oakley wrote:
>> Signed-off-by: Philip Oakley <philipoakley@iee.org>
>> ---
>> new
>> Junio's final comment 
>> https://public-inbox.org/git/xmqqwpkq6b4d.fsf%40gitster.mtv.corp.google.com/
>> ---
>>  Documentation/revisions.txt | 4 ++++
>>  1 file changed, 4 insertions(+)
>>
>> diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt
>> index 0b5044d..934d071 100644
>> --- a/Documentation/revisions.txt
>> +++ b/Documentation/revisions.txt
>> @@ -284,6 +284,10 @@ The 'r1{caret}@' notation means all parents of 'r1'.
>>  'r1{caret}!' notation includes commit 'r1' but excludes all of its 
>> parents.
>>  This is the single commit 'r1', if standalone.
>>
>> +While '<rev>{caret}<n>' was about specifying a single commit parent, 
>> these
>> +two notations consider all its parents. For example you can say
>> +'HEAD{caret}2^@', however you cannot say 'HEAD{caret}@{caret}2'.
>
> That ^ should be {caret}, right?
>
Yes (I think so - will change).

I had planned to change it but it looks like I missed it.

In an earlier version I hadn't changed any of them (or maybe just one) and 
the asciidoc barfed. I suspect that the ^ ^ symbols have to be paired 
properly, and a bad pairing around / across the quotes makes the parsing 
fail. it looks like singletons (which clearly never pair) are accespted 'as 
is'

I think the later examples are inside some form of a block quote with no 
expansions at all.

--
Philip


> M.
>
> 


^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: [PATCH v5 11/12] doc: revisions: show revision expansion in examples
  2016-08-12 15:22                   ` Marc Branchaud
@ 2016-08-12 22:45                     ` Philip Oakley
  0 siblings, 0 replies; 107+ messages in thread
From: Philip Oakley @ 2016-08-12 22:45 UTC (permalink / raw)
  To: GitList, Junio C Hamano, Marc Branchaud; +Cc: Jakub Narębski

From: "Marc Branchaud" <marcnarc@xiplink.com>
> On 2016-08-12 03:07 AM, Philip Oakley wrote:
>> The revisions examples show the revison arguments and the selected
>> commits, but do not show the intermediate step of the expansion of
>> the special 'range' notations. Extend the examples, including an
>> all-parents multi-parent merge commit example.
>>
>> Sort the examples and fix the alignment for those unaffected
>> in the next commit.
>>
>> Signed-off-by: Philip Oakley <philipoakley@iee.org>
>> ---
>> new
>> Cc: Jakub Narębski <jnareb@gmail.com>
>> ---
>>  Documentation/revisions.txt | 19 +++++++++++++------
>>  1 file changed, 13 insertions(+), 6 deletions(-)
>>
>> diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt
>> index 70864d5..ac7dd8e 100644
>> --- a/Documentation/revisions.txt
>> +++ b/Documentation/revisions.txt
>> @@ -326,16 +326,23 @@ Revision Range Summary
>>    as giving commit '<rev>' and then all its parents prefixed with
>>    '{caret}' to exclude them (and their ancestors).
>>
>> -Here are a handful of examples:
>> +Here are a handful of examples using the Loeliger illustration above:
>>
>> +   Args   Expansion       Selection
>
> I think "Result" would be better than "Selection" here.

I wanted to avoid that. I feel that "Result" is too general. I had thought 
about using the 'ed' rather than 'ion' word endings, but that would require 
(to my mind) the noun e.g. "Expanded arguments" and " Selected commits" 
(still could be - see below), while the 'ion' endings felt complete. The 
Result is what is shown in thable below these headings ;-)


>
> Also, shouldn't all the ^ in these examples be {caret}?  (I likely just 
> don't understand the rationale for using {caret} in some places and ^ in 
> others...)

All the conversions appear to work. I think that asciidoc is viewing these a 
blocked text without any expansion. Plus, it would be horrendous trying to 
check the formatting (endless reruns of make.. ... .. )

>
>>     D                G H D
>>     D F              G H I J D F
>>     ^G D             H D
>>     ^D B             E I J F B
>> -   B..C             C
>> -   B...C            G H D E B C
>> +   B..C   = ^B C          C
>> +   B...C  = B ^F C        G H D E B C
>>     ^D B C           E I J F B C
>>     C                I J F C
>> -   C^@              I J F
>> -   C^!              C
>> -   F^! D            G H D F
>> +   C^@    = C^1
>
> I have a mixed reaction to showing this "C^1" expansion, and the "B^1 B^2 
> B^3" one as well.  I see the appeal of showing the parent notation, but 
> really that was already explained to death in the first section.

This was the whole point. For some (e.g. me) the explanations had fallen 
flat on their face, and it was difficult to see what it was on about. Now I 
know, it's all obvious, but what was needed was a carefully stepped through 
example or two. If the dear reader can't see the big steps, let's give them 
small steps.

Jacob had given an 'example' in response to my early query, but it just felt 
like repetion of what had already been said, but it didn't take the next 
[small] step, which this example does (partly because it can as it can use 
the Loeliger diagram, which wasn't available in Jacob's example).

I also deliberately added the B^@ and B^! (standalone) example as the C^@ 
and C^!  didn't have an 'all parents' (plurals!), but it did have the 
indentation issue - see above about stretching out the headers, which would 
give more space for the indentations.

> Here it's distracting.  I think it's clearer for the reader to remove 
> these expansions and just use the node names from the illustration.
>
>> +          = F             I J F
>> +   B^@    = B^1 B^2 B^3
>> +          = D E F         D G H E F I J
>> +   C^!    = C ^C^1
>
> I think this expansion might be better expressed as "C ^C^@".

I hadn't viewed it that way. It would be an extra step.

>        It'll be the same for "B^! = B ^B^@" as well, which demonstrates a 
> nice consistency and also helps to emphasize the meaning of the ^@ 
> notation.
>
>> +          = C ^F          C
>> +   B^! = B ^B^1 ^B^2 ^B^3
>> +       = B ^D ^E ^F       B
>
> The layout of these last two lines doesn't match the others.  They should 
> be:
>
>    B^!    = B ^B^1 ^B^2   ^B^3
>           = B ^D ^E ^F    B
>
> I see that the next patch fixes the layout of the unchanged examples, but 
> it leaves these two unaligned.

As noted it was about squeezing that one in. I'll look at alternate heading 
titles and spacing options.


--
Philip 


^ permalink raw reply	[flat|nested] 107+ messages in thread

* [PATCH v6 00/12] Update git revisions
  2016-08-11 21:50               ` [PATCH v5 00/12] Update git revisions Philip Oakley
  2016-08-11 21:50                 ` [PATCH v5 01/12] doc: use 'symmetric difference' consistently Philip Oakley
  2016-08-11 22:32                 ` [PATCH v5 00/12] Update git revisions Philip Oakley
@ 2016-08-12 23:45                 ` Philip Oakley
  2016-08-12 23:45                   ` [PATCH v6 05/12] doc: revisions: extra clarification of <rev>^! notation effects Philip Oakley
                                     ` (5 more replies)
  2 siblings, 6 replies; 107+ messages in thread
From: Philip Oakley @ 2016-08-12 23:45 UTC (permalink / raw)
  To: GitList, Junio C Hamano

These are the quick fixes to Marc's comments to patches 5,6,11,
and a consequential change to 12.

Only the changed patches are included.

Philip Oakley (12):
  doc: use 'symmetric difference' consistently
  doc: revisions - name the left and right sides
  doc: show the actual left, right, and boundary marks
  doc: revisions: give headings for the two and three dot notations
  doc: revisions: extra clarification of <rev>^! notation effects
  doc: revisions: single vs multi-parent notation comparison
  doc: gitrevisions - use 'reachable' in page description
  doc: gitrevisions - clarify 'latter case' is revision walk
  doc: revisions  - define `reachable`
  doc: revisions - clarify reachability examples
  doc: revisions: show revision expansion in examples
  doc: revisions: sort examples and fix alignment of the unchanged

 Documentation/gitk.txt             |   2 +-
 Documentation/gitrevisions.txt     |   6 +-
 Documentation/pretty-formats.txt   |   2 +-
 Documentation/rev-list-options.txt |   4 +-
 Documentation/revisions.txt        | 125 ++++++++++++++++++++++++-------------
 5 files changed, 88 insertions(+), 51 deletions(-)

-- 
2.9.0.windows.1


^ permalink raw reply	[flat|nested] 107+ messages in thread

* [PATCH v6 05/12] doc: revisions: extra clarification of <rev>^! notation effects
  2016-08-12 23:45                 ` [PATCH v6 " Philip Oakley
@ 2016-08-12 23:45                   ` Philip Oakley
  2016-08-12 23:45                   ` [PATCH v6 06/12] doc: revisions: single vs multi-parent notation comparison Philip Oakley
                                     ` (4 subsequent siblings)
  5 siblings, 0 replies; 107+ messages in thread
From: Philip Oakley @ 2016-08-12 23:45 UTC (permalink / raw)
  To: GitList, Junio C Hamano; +Cc: Jakub Narębski, Marc Branchaud

Signed-off-by: Philip Oakley <philipoakley@iee.org>
---
v6 updated
Cc: Jakub Narębski <jnareb@gmail.com>
Cc: Marc Branchaud <marcnarc@xiplink.com>
https://public-inbox.org/git/578E4F4A.2020708%40gmail.com/
---
 Documentation/revisions.txt | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt
index 3da0083..17fc45c 100644
--- a/Documentation/revisions.txt
+++ b/Documentation/revisions.txt
@@ -281,7 +281,8 @@ for naming a set that is formed by a commit and its parent commits.
 
 The 'r1{caret}@' notation means all parents of 'r1'.
 
-'r1{caret}!' includes commit 'r1' but excludes all of its parents.
+The 'r1{caret}!' notation includes commit 'r1' but excludes all of its parents.
+By itself, this notation denotes the single commit 'r1'.
 
 Revision Range Summary
 ----------------------
-- 
2.9.0.windows.1


^ permalink raw reply related	[flat|nested] 107+ messages in thread

* [PATCH v6 06/12] doc: revisions: single vs multi-parent notation comparison
  2016-08-12 23:45                 ` [PATCH v6 " Philip Oakley
  2016-08-12 23:45                   ` [PATCH v6 05/12] doc: revisions: extra clarification of <rev>^! notation effects Philip Oakley
@ 2016-08-12 23:45                   ` Philip Oakley
  2016-08-26 15:30                     ` Jakub Narębski
  2016-08-12 23:45                   ` [PATCH v6 11/12] doc: revisions: show revision expansion in examples Philip Oakley
                                     ` (3 subsequent siblings)
  5 siblings, 1 reply; 107+ messages in thread
From: Philip Oakley @ 2016-08-12 23:45 UTC (permalink / raw)
  To: GitList, Junio C Hamano; +Cc: Marc Branchaud

Signed-off-by: Philip Oakley <philipoakley@iee.org>
---
v6 updated
Junio's final comment https://public-inbox.org/git/xmqqwpkq6b4d.fsf%40gitster.mtv.corp.google.com/
Cc: Marc Branchaud <marcnarc@xiplink.com>
---
 Documentation/revisions.txt | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt
index 17fc45c..242123b 100644
--- a/Documentation/revisions.txt
+++ b/Documentation/revisions.txt
@@ -284,6 +284,10 @@ The 'r1{caret}@' notation means all parents of 'r1'.
 The 'r1{caret}!' notation includes commit 'r1' but excludes all of its parents.
 By itself, this notation denotes the single commit 'r1'.
 
+While '<rev>{caret}<n>' was about specifying a single commit parent, these
+two notations consider all its parents. For example you can say
+'HEAD{caret}2{caret}@', however you cannot say 'HEAD{caret}@{caret}2'.
+
 Revision Range Summary
 ----------------------
 
-- 
2.9.0.windows.1


^ permalink raw reply related	[flat|nested] 107+ messages in thread

* [PATCH v6 11/12] doc: revisions: show revision expansion in examples
  2016-08-12 23:45                 ` [PATCH v6 " Philip Oakley
  2016-08-12 23:45                   ` [PATCH v6 05/12] doc: revisions: extra clarification of <rev>^! notation effects Philip Oakley
  2016-08-12 23:45                   ` [PATCH v6 06/12] doc: revisions: single vs multi-parent notation comparison Philip Oakley
@ 2016-08-12 23:45                   ` Philip Oakley
  2016-08-12 23:45                   ` [PATCH v6 12/12] doc: revisions: sort examples and fix alignment of the unchanged Philip Oakley
                                     ` (2 subsequent siblings)
  5 siblings, 0 replies; 107+ messages in thread
From: Philip Oakley @ 2016-08-12 23:45 UTC (permalink / raw)
  To: GitList, Junio C Hamano; +Cc: Jakub Narębski, Marc Branchaud

The revisions examples show the revison arguments and the selected
commits, but do not show the intermediate step of the expansion of
the special 'range' notations. Extend the examples, including an
all-parents multi-parent merge commit example.

Sort the examples and fix the alignment for those unaffected
in the next commit.

Signed-off-by: Philip Oakley <philipoakley@iee.org>
---
v6 updated
Cc: Jakub Narębski <jnareb@gmail.com>
Cc: Marc Branchaud <marcnarc@xiplink.com>
---
 Documentation/revisions.txt | 23 +++++++++++++++++------
 1 file changed, 17 insertions(+), 6 deletions(-)

diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt
index e9a74fc..f15d5ed 100644
--- a/Documentation/revisions.txt
+++ b/Documentation/revisions.txt
@@ -326,16 +326,27 @@ Revision Range Summary
   as giving commit '<rev>' and then all its parents prefixed with
   '{caret}' to exclude them (and their ancestors).
 
-Here are a handful of examples:
+Here are a handful of examples using the Loeliger illustration above,
+with each step in the notation's expansion and selection carefully
+spelt out:
 
+   Args   Expanded arguments    Selected commits
    D                G H D
    D F              G H I J D F
    ^G D             H D
    ^D B             E I J F B
-   B..C             C
-   B...C            G H D E B C
+   B..C   = ^B C                C
+   B...C  = B ^F C              G H D E B C
    ^D B C           E I J F B C
    C                I J F C
-   C^@              I J F
-   C^!              C
-   F^! D            G H D F
+   C^@    = C^1
+          = F                   I J F
+   B^@    = B^1 B^2 B^3
+          = D E F               D G H E F I J
+   C^!    = C ^C^@
+          = C ^C^1
+          = C ^F                C
+   B^!    = B ^B^@
+          = B ^B^1 ^B^2 ^B^3
+          = B ^D ^E ^F          B
+   F^! D  = F ^I ^J D           G H D F
-- 
2.9.0.windows.1


^ permalink raw reply related	[flat|nested] 107+ messages in thread

* [PATCH v6 12/12] doc: revisions: sort examples and fix alignment of the unchanged
  2016-08-12 23:45                 ` [PATCH v6 " Philip Oakley
                                     ` (2 preceding siblings ...)
  2016-08-12 23:45                   ` [PATCH v6 11/12] doc: revisions: show revision expansion in examples Philip Oakley
@ 2016-08-12 23:45                   ` Philip Oakley
  2016-08-15 14:30                   ` [PATCH v6 00/12] Update git revisions Marc Branchaud
  2016-08-31 16:22                   ` Junio C Hamano
  5 siblings, 0 replies; 107+ messages in thread
From: Philip Oakley @ 2016-08-12 23:45 UTC (permalink / raw)
  To: GitList, Junio C Hamano; +Cc: Marc Branchaud

The previous commit adjusted the column alignment for revision
examples which show expansion. Fix the unchanged examples and sort
those that show expansions to the end of the list.

Signed-off-by: Philip Oakley <philipoakley@iee.org>
---
v6 updated
Cc: Marc Branchaud <marcnarc@xiplink.com>
---
 Documentation/revisions.txt | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt
index f15d5ed..b9b45c0 100644
--- a/Documentation/revisions.txt
+++ b/Documentation/revisions.txt
@@ -331,14 +331,14 @@ with each step in the notation's expansion and selection carefully
 spelt out:
 
    Args   Expanded arguments    Selected commits
-   D                G H D
-   D F              G H I J D F
-   ^G D             H D
-   ^D B             E I J F B
+   D                            G H D
+   D F                          G H I J D F
+   ^G D                         H D
+   ^D B                         E I J F B
+   ^D B C                       E I J F B C
+   C                            I J F C
    B..C   = ^B C                C
    B...C  = B ^F C              G H D E B C
-   ^D B C           E I J F B C
-   C                I J F C
    C^@    = C^1
           = F                   I J F
    B^@    = B^1 B^2 B^3
-- 
2.9.0.windows.1


^ permalink raw reply related	[flat|nested] 107+ messages in thread

* Re: [PATCH v6 00/12] Update git revisions
  2016-08-12 23:45                 ` [PATCH v6 " Philip Oakley
                                     ` (3 preceding siblings ...)
  2016-08-12 23:45                   ` [PATCH v6 12/12] doc: revisions: sort examples and fix alignment of the unchanged Philip Oakley
@ 2016-08-15 14:30                   ` Marc Branchaud
  2016-08-15 15:00                     ` Philip Oakley
  2016-08-15 17:06                     ` [PATCH v6 00/12] Update git revisions Junio C Hamano
  2016-08-31 16:22                   ` Junio C Hamano
  5 siblings, 2 replies; 107+ messages in thread
From: Marc Branchaud @ 2016-08-15 14:30 UTC (permalink / raw)
  To: Philip Oakley, GitList, Junio C Hamano

On 2016-08-12 07:45 PM, Philip Oakley wrote:
> These are the quick fixes to Marc's comments to patches 5,6,11,
> and a consequential change to 12.
>
> Only the changed patches are included.

Looks good to me -- no further comments!

However, I still don't understand why git says 11/12 has "indent with 
spaces" problems.

		M.


> Philip Oakley (12):
>   doc: use 'symmetric difference' consistently
>   doc: revisions - name the left and right sides
>   doc: show the actual left, right, and boundary marks
>   doc: revisions: give headings for the two and three dot notations
>   doc: revisions: extra clarification of <rev>^! notation effects
>   doc: revisions: single vs multi-parent notation comparison
>   doc: gitrevisions - use 'reachable' in page description
>   doc: gitrevisions - clarify 'latter case' is revision walk
>   doc: revisions  - define `reachable`
>   doc: revisions - clarify reachability examples
>   doc: revisions: show revision expansion in examples
>   doc: revisions: sort examples and fix alignment of the unchanged
>
>  Documentation/gitk.txt             |   2 +-
>  Documentation/gitrevisions.txt     |   6 +-
>  Documentation/pretty-formats.txt   |   2 +-
>  Documentation/rev-list-options.txt |   4 +-
>  Documentation/revisions.txt        | 125 ++++++++++++++++++++++++-------------
>  5 files changed, 88 insertions(+), 51 deletions(-)
>

^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: [PATCH v6 00/12] Update git revisions
  2016-08-15 14:30                   ` [PATCH v6 00/12] Update git revisions Marc Branchaud
@ 2016-08-15 15:00                     ` Philip Oakley
  2016-08-15 16:55                       ` BUG: indent-with-non-tab always on (was: Re: [PATCH v6 00/12] Update git revisions) Marc Branchaud
  2016-08-15 17:06                     ` [PATCH v6 00/12] Update git revisions Junio C Hamano
  1 sibling, 1 reply; 107+ messages in thread
From: Philip Oakley @ 2016-08-15 15:00 UTC (permalink / raw)
  To: GitList, Junio C Hamano, Marc Branchaud

From: "Marc Branchaud" <marcnarc@xiplink.com>
> On 2016-08-12 07:45 PM, Philip Oakley wrote:
>> These are the quick fixes to Marc's comments to patches 5,6,11,
>> and a consequential change to 12.
>>
>> Only the changed patches are included.
>
> Looks good to me -- no further comments!
>
> However, I still don't understand why git says 11/12 has "indent with 
> spaces" problems.

I'm guessing it's that the text is monospaced rather than tabbed, and it's 
flagging that.

I'd noticed that it was highlighted in the Git gui (which I use to visualise 
both the diff, the message and the part after the three dashes at the same 
time).


>
> M.
>
>
>> Philip Oakley (12):
>>   doc: use 'symmetric difference' consistently
>>   doc: revisions - name the left and right sides
>>   doc: show the actual left, right, and boundary marks
>>   doc: revisions: give headings for the two and three dot notations
>>   doc: revisions: extra clarification of <rev>^! notation effects
>>   doc: revisions: single vs multi-parent notation comparison
>>   doc: gitrevisions - use 'reachable' in page description
>>   doc: gitrevisions - clarify 'latter case' is revision walk
>>   doc: revisions  - define `reachable`
>>   doc: revisions - clarify reachability examples
>>   doc: revisions: show revision expansion in examples
>>   doc: revisions: sort examples and fix alignment of the unchanged
>>
>>  Documentation/gitk.txt             |   2 +-
>>  Documentation/gitrevisions.txt     |   6 +-
>>  Documentation/pretty-formats.txt   |   2 +-
>>  Documentation/rev-list-options.txt |   4 +-
>>  Documentation/revisions.txt        | 125 
>> ++++++++++++++++++++++++-------------
>>  5 files changed, 88 insertions(+), 51 deletions(-)


^ permalink raw reply	[flat|nested] 107+ messages in thread

* BUG: indent-with-non-tab always on (was: Re: [PATCH v6 00/12] Update git revisions)
  2016-08-15 15:00                     ` Philip Oakley
@ 2016-08-15 16:55                       ` Marc Branchaud
  2016-08-15 17:54                         ` BUG: indent-with-non-tab always on Marc Branchaud
  0 siblings, 1 reply; 107+ messages in thread
From: Marc Branchaud @ 2016-08-15 16:55 UTC (permalink / raw)
  To: Philip Oakley, GitList, Junio C Hamano

On 2016-08-15 11:00 AM, Philip Oakley wrote:
> From: "Marc Branchaud" <marcnarc@xiplink.com>
>> On 2016-08-12 07:45 PM, Philip Oakley wrote:
>>> These are the quick fixes to Marc's comments to patches 5,6,11,
>>> and a consequential change to 12.
>>>
>>> Only the changed patches are included.
>>
>> Looks good to me -- no further comments!
>>
>> However, I still don't understand why git says 11/12 has "indent with
>> spaces" problems.
>
> I'm guessing it's that the text is monospaced rather than tabbed, and
> it's flagging that.
>
> I'd noticed that it was highlighted in the Git gui (which I use to
> visualise both the diff, the message and the part after the three dashes
> at the same time).

Actually, it looks like an indent-with-non-tab problem, which is 
supposed to be off by default.

Git doesn't complain about the patch if I set
	core.whitespace = tabwidth=11
presumably because the patch uses 10 spaces to indent the offending lines.

But explicitly disabling that check with
	core.whitespace = -indent-with-non-tab
doesn't work.

Unfortunately, I don't have time today to track this down.

		M.


^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: [PATCH v6 00/12] Update git revisions
  2016-08-15 14:30                   ` [PATCH v6 00/12] Update git revisions Marc Branchaud
  2016-08-15 15:00                     ` Philip Oakley
@ 2016-08-15 17:06                     ` Junio C Hamano
  1 sibling, 0 replies; 107+ messages in thread
From: Junio C Hamano @ 2016-08-15 17:06 UTC (permalink / raw)
  To: Marc Branchaud; +Cc: Philip Oakley, GitList

Marc Branchaud <marcnarc@xiplink.com> writes:

> On 2016-08-12 07:45 PM, Philip Oakley wrote:
>> These are the quick fixes to Marc's comments to patches 5,6,11,
>> and a consequential change to 12.
>>
>> Only the changed patches are included.
>
> Looks good to me -- no further comments!
>
> However, I still don't understand why git says 11/12 has "indent with
> spaces" problems.

Probably that is because Documentation/.gitattributes has

	*.txt whitespace

to tell Git to notice all types of potential whitespace errors known
to it.  The checking of indent-with-tab is deliberate here, because
we rely on the fact that asciidoc treats HT as "fill with necessary
spaces to next multiple of 8" even when it renders a fixed-column
drawing.

^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: BUG: indent-with-non-tab always on
  2016-08-15 16:55                       ` BUG: indent-with-non-tab always on (was: Re: [PATCH v6 00/12] Update git revisions) Marc Branchaud
@ 2016-08-15 17:54                         ` Marc Branchaud
  0 siblings, 0 replies; 107+ messages in thread
From: Marc Branchaud @ 2016-08-15 17:54 UTC (permalink / raw)
  To: Philip Oakley, GitList, Junio C Hamano

On 2016-08-15 12:55 PM, Marc Branchaud wrote:
> On 2016-08-15 11:00 AM, Philip Oakley wrote:
>> From: "Marc Branchaud" <marcnarc@xiplink.com>
>>> On 2016-08-12 07:45 PM, Philip Oakley wrote:
>>>> These are the quick fixes to Marc's comments to patches 5,6,11,
>>>> and a consequential change to 12.
>>>>
>>>> Only the changed patches are included.
>>>
>>> Looks good to me -- no further comments!
>>>
>>> However, I still don't understand why git says 11/12 has "indent with
>>> spaces" problems.
>>
>> I'm guessing it's that the text is monospaced rather than tabbed, and
>> it's flagging that.
>>
>> I'd noticed that it was highlighted in the Git gui (which I use to
>> visualise both the diff, the message and the part after the three dashes
>> at the same time).
>
> Actually, it looks like an indent-with-non-tab problem, which is
> supposed to be off by default.
>
> Git doesn't complain about the patch if I set
>     core.whitespace = tabwidth=11
> presumably because the patch uses 10 spaces to indent the offending lines.
>
> But explicitly disabling that check with
>     core.whitespace = -indent-with-non-tab
> doesn't work.
>
> Unfortunately, I don't have time today to track this down.

Gah, never mind -- didn't realize it was turned on in 
Documentation/.gitattributes.

		M.


^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: [PATCH v5 01/12] doc: use 'symmetric difference' consistently
  2016-08-11 21:50                 ` [PATCH v5 01/12] doc: use 'symmetric difference' consistently Philip Oakley
@ 2016-08-26 11:33                   ` Jakub Narębski
  2016-08-26 16:09                     ` Junio C Hamano
  0 siblings, 1 reply; 107+ messages in thread
From: Jakub Narębski @ 2016-08-26 11:33 UTC (permalink / raw)
  To: Philip Oakley, GitList, Junio C Hamano

W dniu 11.08.2016 o 23:50, Philip Oakley pisze:
  
> diff --git a/Documentation/rev-list-options.txt b/Documentation/rev-list-options.txt
> index 4f009d4..6dc0bb0 100644
> --- a/Documentation/rev-list-options.txt
> +++ b/Documentation/rev-list-options.txt
> @@ -225,7 +225,7 @@ excluded from the output.
>  
>  --left-only::
>  --right-only::
> -	List only commits on the respective side of a symmetric range,
> +	List only commits on the respective side of a symmetric difference,
>  	i.e. only those which would be marked `<` resp. `>` by
>  	`--left-right`.
>  +
> @@ -766,7 +766,7 @@ ifdef::git-rev-list[]
>  endif::git-rev-list[]
>  
>  --left-right::
> -	Mark which side of a symmetric diff a commit is reachable from.
> +	Mark which side of a symmetric difference a commit is reachable from.
>  	Commits from the left side are prefixed with `<` and those from
>  	the right with `>`.  If combined with `--boundary`, those
>  	commits are prefixed with `-`.

That's very nice that two^W three related options, namely --left-only,
--right-only and --left-right now use the same notation.

I guess that "symmetric range" was to mean "symmetric difference range".

Best,
-- 
Jakub Narębski


^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: [PATCH v6 06/12] doc: revisions: single vs multi-parent notation comparison
  2016-08-12 23:45                   ` [PATCH v6 06/12] doc: revisions: single vs multi-parent notation comparison Philip Oakley
@ 2016-08-26 15:30                     ` Jakub Narębski
  2016-08-26 16:19                       ` Junio C Hamano
  0 siblings, 1 reply; 107+ messages in thread
From: Jakub Narębski @ 2016-08-26 15:30 UTC (permalink / raw)
  To: Philip Oakley, GitList, Junio C Hamano; +Cc: Marc Branchaud

W dniu 13.08.2016 o 01:45, Philip Oakley pisze:

> --- a/Documentation/revisions.txt
> +++ b/Documentation/revisions.txt
> @@ -284,6 +284,10 @@ The 'r1{caret}@' notation means all parents of 'r1'.
>  The 'r1{caret}!' notation includes commit 'r1' but excludes all of its parents.
>  By itself, this notation denotes the single commit 'r1'.
>  
> +While '<rev>{caret}<n>' was about specifying a single commit parent, these
> +two notations consider all its parents. For example you can say
> +'HEAD{caret}2{caret}@', however you cannot say 'HEAD{caret}@{caret}2'.
> +

That's good to have.

Though I do wonder if it is implementation limitation, or if it is something
inherent in the notation, namely that <rev>^@ and <rev>^! resolve (the former
at least in general, though not for every <rev>) to more than one revision
specifier.

Anyway, good addition!
-- 
Jakub Narębski


^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: [PATCH v5 01/12] doc: use 'symmetric difference' consistently
  2016-08-26 11:33                   ` Jakub Narębski
@ 2016-08-26 16:09                     ` Junio C Hamano
  0 siblings, 0 replies; 107+ messages in thread
From: Junio C Hamano @ 2016-08-26 16:09 UTC (permalink / raw)
  To: Jakub Narębski; +Cc: Philip Oakley, GitList

Jakub Narębski <jnareb@gmail.com> writes:

>>  --left-right::
>> -	Mark which side of a symmetric diff a commit is reachable from.
>> +	Mark which side of a symmetric difference a commit is reachable from.
>>  	Commits from the left side are prefixed with `<` and those from
>>  	the right with `>`.  If combined with `--boundary`, those
>>  	commits are prefixed with `-`.
>
> That's very nice that two^W three related options, namely --left-only,
> --right-only and --left-right now use the same notation.
>
> I guess that "symmetric range" was to mean "symmetric difference range".

By "symmetric difference", we mean a "set difference" operation that
is symmetric.  Contrasting with asymmetric difference that gives a
set of elements that belong to set A but do not belong to set B
(i.e. B..A), symmetric difference of set A and set B gives a set of
elements that belong to either set A alone or set B alone but not
both (i.e. A...B).

So if you really want a fully spelled name, we would not want to
call it with a name with "range".  It is "symmetric set difference",
and "symmetric difference" in the updated sentence is a short-hand
for that.

^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: [PATCH v6 06/12] doc: revisions: single vs multi-parent notation comparison
  2016-08-26 15:30                     ` Jakub Narębski
@ 2016-08-26 16:19                       ` Junio C Hamano
  0 siblings, 0 replies; 107+ messages in thread
From: Junio C Hamano @ 2016-08-26 16:19 UTC (permalink / raw)
  To: Jakub Narębski; +Cc: Philip Oakley, GitList, Marc Branchaud

Jakub Narębski <jnareb@gmail.com> writes:

> W dniu 13.08.2016 o 01:45, Philip Oakley pisze:
>
>> +'HEAD{caret}2{caret}@', however you cannot say 'HEAD{caret}@{caret}2'.
>
> Though I do wonder if it is implementation limitation, or if it is something
> inherent in the notation, namely that <rev>^@ and <rev>^! resolve (the former
> at least in general, though not for every <rev>) to more than one revision
> specifier.

I think that the answer you are giving to the question is the latter,
and I tend to agree with you.

You could define: A^@ followed by <anything> means first expand A^@,
and then apply that <anything> to each and every one in the resulting
set.  But some may be merges and while others not.  It is unclear
what should happen to A^@^2 when one of A's parents has only one
parent.  In some use cases, it would be convenient if parents of A
to which the <anything> operation cannot be applied, but in other
use cases, it would be convenient if the whole thing caused an error.
The notation is not detailed/rich enough to express the distinction.



^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: [PATCH v5 09/12] doc: revisions - define `reachable`
  2016-08-12  7:07                 ` [PATCH v5 09/12] doc: revisions - define `reachable` Philip Oakley
@ 2016-08-28 13:01                   ` Jakub Narębski
  2016-08-29 13:21                     ` Philip Oakley
  0 siblings, 1 reply; 107+ messages in thread
From: Jakub Narębski @ 2016-08-28 13:01 UTC (permalink / raw)
  To: Philip Oakley, GitList, Junio C Hamano

W dniu 12.08.2016 o 09:07, Philip Oakley pisze:
[...]

>  History traversing commands such as `git log` operate on a set
> -of commits, not just a single commit.  To these commands,
> -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.
> +of commits, not just a single commit.
> +
> +For these commands,
> +specifying a single revision, using the notation described in the
> +previous section, means the set of commits `reachable` from the given
> +commit.

Why such strange formatting?  Is it to keep original contents
for better blame / word diff?

> +
> +A commit's reachable set is the commit itself and the commits in
> +its ancestry chain.
> +

It is all right, but perhaps it would be better to just repeat:

  +Set of commits reachable from given commit is the commit itself
  +and all the commits in its ancestry chain.

-- 
Jakub Narębski


^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: [PATCH v5 09/12] doc: revisions - define `reachable`
  2016-08-28 13:01                   ` Jakub Narębski
@ 2016-08-29 13:21                     ` Philip Oakley
  2016-08-29 14:43                       ` Jakub Narębski
  0 siblings, 1 reply; 107+ messages in thread
From: Philip Oakley @ 2016-08-29 13:21 UTC (permalink / raw)
  To: GitList, Junio C Hamano, Jakub Narębski

From: "Jakub Narębski" <jnareb@gmail.com>
Sent: Sunday, August 28, 2016 2:01 PM
>W dniu 12.08.2016 o 09:07, Philip Oakley pisze:
> [...]
>
>>  History traversing commands such as `git log` operate on a set
>> -of commits, not just a single commit.  To these commands,
>> -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.
>> +of commits, not just a single commit.
>> +
>> +For these commands,
>> +specifying a single revision, using the notation described in the
>> +previous section, means the set of commits `reachable` from the given
>> +commit.
>
> Why such strange formatting?  Is it to keep original contents
> for better blame / word diff?

Strange as in 'not reflowed'? - yes that was the reason. It can be hard to 
see the wood from the trees if there is a lot of reflow going on, as it can 
hide the issue behind the key change.

I did slightly abuse notation by quoting `reachable` to indicate that it's a 
term with a precise definition that can be confusing to those that don't 
know. I also split out the reachability parts into their own paragraphs.

>
>> +
>> +A commit's reachable set is the commit itself and the commits in
>> +its ancestry chain.
>> +
>
> It is all right, but perhaps it would be better to just repeat:
>
>  +Set of commits reachable from given commit is the commit itself
>  +and all the commits in its ancestry chain.

It's very easy to go around in circles here. The original issue was the A..B 
notation for the case where A is a direct descendant of B, such that new 
users, or users more familiar with range notations from elsewhere, would 
expect that the A..B range is *inclusive*, rather than an open / closed 
interval. It was the addressing of that problem that lead to the updating of 
the 'reachability' definition.

The main part of my sentence formation was to make the 'reachable' part the 
defining element, rather than being a feature of the set. Maybe it's using 
the 'set' viewpoint that is distracting?
>
> -- 
> Jakub Narębski
>
> 


^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: [PATCH v5 09/12] doc: revisions - define `reachable`
  2016-08-29 13:21                     ` Philip Oakley
@ 2016-08-29 14:43                       ` Jakub Narębski
  2016-08-29 19:27                         ` Philip Oakley
  0 siblings, 1 reply; 107+ messages in thread
From: Jakub Narębski @ 2016-08-29 14:43 UTC (permalink / raw)
  To: Philip Oakley, GitList, Junio C Hamano

W dniu 29.08.2016 o 15:21, Philip Oakley pisze:
> From: "Jakub Narębski" <jnareb@gmail.com>
> Sent: Sunday, August 28, 2016 2:01 PM
>> W dniu 12.08.2016 o 09:07, Philip Oakley pisze:
[...]

>>> +For these commands,
>>> +specifying a single revision, using the notation described in the
>>> +previous section, means the set of commits `reachable` from the given
>>> +commit.
[...]
>>> +
>>> +A commit's reachable set is the commit itself and the commits in
>>> +its ancestry chain.
>>> +
>>
>> It is all right, but perhaps it would be better to just repeat:
>>
>>  +Set of commits reachable from given commit is the commit itself
>>  +and all the commits in its ancestry chain.
> 
> It's very easy to go around in circles here. The original issue was
> the A..B notation for the case where A is a direct descendant of B,
> such that new users, or users more familiar with range notations from
> elsewhere, would expect that the A..B range is *inclusive*, rather
> than an open / closed interval. It was the addressing of that problem
> that lead to the updating of the 'reachability' definition.

All right, I can see that.  It is a worthwhile goal.

> The main part of my sentence formation was to make the 'reachable'
> part the defining element, rather than being a feature of the set.
> Maybe it's using the 'set' viewpoint that is distracting?>>

One one hand, the "A commit's reachable set is ..." approach puts
'reachable' upfront.  On the other hand it introduces new terminology,
namely 'reachable set' (or 'reachable set of a commit' to be more
exact)...  it doesn't read that well to me, but I am not a native
speaker.

But as I wrote, this is quite all right anyway
-- 
Jakub Narębski


^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: [PATCH v5 09/12] doc: revisions - define `reachable`
  2016-08-29 14:43                       ` Jakub Narębski
@ 2016-08-29 19:27                         ` Philip Oakley
  0 siblings, 0 replies; 107+ messages in thread
From: Philip Oakley @ 2016-08-29 19:27 UTC (permalink / raw)
  To: GitList, Junio C Hamano, Jakub Narębski

From: "Jakub Narębski" <jnareb@gmail.com>
>W dniu 29.08.2016 o 15:21, Philip Oakley pisze:
>> From: "Jakub Narębski" <jnareb@gmail.com>
>> Sent: Sunday, August 28, 2016 2:01 PM
>>> W dniu 12.08.2016 o 09:07, Philip Oakley pisze:
> [...]
>
>>>> +For these commands,
>>>> +specifying a single revision, using the notation described in the
>>>> +previous section, means the set of commits `reachable` from the given
>>>> +commit.
> [...]
>>>> +
>>>> +A commit's reachable set is the commit itself and the commits in
>>>> +its ancestry chain.
>>>> +
>>>
>>> It is all right, but perhaps it would be better to just repeat:
>>>
>>>  +Set of commits reachable from given commit is the commit itself
>>>  +and all the commits in its ancestry chain.
>>
>> It's very easy to go around in circles here. The original issue was
>> the A..B notation for the case where A is a direct descendant of B,
>> such that new users, or users more familiar with range notations from
>> elsewhere, would expect that the A..B range is *inclusive*, rather
>> than an open / closed interval. It was the addressing of that problem
>> that lead to the updating of the 'reachability' definition.
>
> All right, I can see that.  It is a worthwhile goal.
>
>> The main part of my sentence formation was to make the 'reachable'
>> part the defining element, rather than being a feature of the set.
>> Maybe it's using the 'set' viewpoint that is distracting?>>
>
> One one hand, the "A commit's reachable set is ..." approach puts
> 'reachable' upfront.  On the other hand it introduces new terminology,
> namely 'reachable set' (or 'reachable set of a commit' to be more
> exact)...  it doesn't read that well to me, but I am not a native
> speaker.
>
> But as I wrote, this is quite all right anyway
> -- 
> Jakub Narębski
--
Thanks.

Philip 


^ permalink raw reply	[flat|nested] 107+ messages in thread

* Re: [PATCH v6 00/12] Update git revisions
  2016-08-12 23:45                 ` [PATCH v6 " Philip Oakley
                                     ` (4 preceding siblings ...)
  2016-08-15 14:30                   ` [PATCH v6 00/12] Update git revisions Marc Branchaud
@ 2016-08-31 16:22                   ` Junio C Hamano
  5 siblings, 0 replies; 107+ messages in thread
From: Junio C Hamano @ 2016-08-31 16:22 UTC (permalink / raw)
  To: Philip Oakley; +Cc: GitList

Philip Oakley <philipoakley@iee.org> writes:

> These are the quick fixes to Marc's comments to patches 5,6,11,
> and a consequential change to 12.
>
> Only the changed patches are included.

I gave a cursory re-read on the whole thing again, and spotted no
further issue.  This has been kept in the "Undecided" pile, but I'll
mark it as "Will merge to 'next'" and hope to have it in 'master'
early in the post 2.10 cycle.

Thanks.

^ permalink raw reply	[flat|nested] 107+ messages in thread

end of thread, other threads:[~2016-08-31 16:26 UTC | newest]

Thread overview: 107+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-06-22  7:25 name for A..B ranges? Philip Oakley
2016-06-24 16:09 ` Jeff King
2016-06-24 16:44   ` Junio C Hamano
2016-06-25 13:50     ` Philip Oakley
2016-06-25 16:46       ` [PATCH 0/2] " Philip Oakley
2016-06-25 16:46         ` [PATCH 1/2] doc: use 'symmetric difference' consistently Philip Oakley
2016-06-25 16:46         ` [PATCH 2/2] doc: give headings for the two and three dot notations Philip Oakley
2016-06-25 18:47         ` [PATCH] doc: show the actual left, right, and boundary marks Philip Oakley
2016-06-30 20:25         ` [PATCH v2 0/4] Name for A..B ranges? Philip Oakley
2016-06-30 20:25           ` [PATCH v2 1/4] doc: use 'symmetric difference' consistently Philip Oakley
2016-06-30 20:25           ` [PATCH v2 2/4] doc: show the actual left, right, and boundary marks Philip Oakley
2016-06-30 20:25           ` [PATCH v2 3/4] doc: give headings for the two and three dot notations Philip Oakley
2016-06-30 20:25           ` [PATCH v2 4/4] doc: clarify that `^r1` will exclude `r1` itself Philip Oakley
2016-07-01 21:16             ` Junio C Hamano
2016-07-01 22:08               ` Philip Oakley
2016-07-01 22:14                 ` Junio C Hamano
2016-07-01 23:01                   ` Junio C Hamano
2016-07-10 21:17                     ` Philip Oakley
2016-07-01 21:27           ` [PATCH v2 0/4] Name for A..B ranges? Junio C Hamano
2016-07-11 20:25           ` [PATCH v3 0/8] " Philip Oakley
2016-07-11 20:25             ` [PATCH v3 1/8] doc: use 'symmetric difference' consistently Philip Oakley
2016-07-11 20:25             ` [PATCH v3 2/8] doc: revisions - name the Left and Right sides Philip Oakley
2016-07-12 16:47               ` Junio C Hamano
2016-07-12 21:47                 ` Philip Oakley
2016-07-11 20:25             ` [PATCH v3 3/8] doc: show the actual left, right, and boundary marks Philip Oakley
2016-07-11 20:25             ` [PATCH v3 4/8] doc: give headings for the two and three dot notations Philip Oakley
2016-07-12 13:44               ` Marc Branchaud
2016-07-12 17:04                 ` Junio C Hamano
2016-07-12 22:11                   ` Philip Oakley
2016-07-19 16:03                     ` Jakub Narębski
2016-07-19 19:15                       ` Philip Oakley
2016-07-12 21:41                 ` Philip Oakley
2016-07-12 22:12                   ` Jeff King
2016-07-11 20:25             ` [PATCH v3 5/8] doc: gitrevisions - use 'reachable' in page description Philip Oakley
2016-07-11 20:25             ` [PATCH v3 6/8] doc: gitrevisions - clarify 'latter case' is revision walk Philip Oakley
2016-07-11 20:25             ` [PATCH v3 7/8] doc: revisions - define `reachable` Philip Oakley
2016-07-12 13:48               ` Marc Branchaud
2016-07-12 21:44                 ` Philip Oakley
2016-07-11 20:25             ` [PATCH v3 8/8] doc: revisions - clarify reachability examples Philip Oakley
2016-07-12 19:29             ` [PATCH v3 0/8] Name for A..B ranges? Junio C Hamano
2016-07-12 22:29               ` Philip Oakley
2016-07-20 21:09             ` [PATCH v4 " Philip Oakley
2016-07-20 21:10               ` [PATCH v4 1/8] doc: use 'symmetric difference' consistently Philip Oakley
2016-07-20 21:10               ` [PATCH v4 2/8] doc: revisions - name the left and right sides Philip Oakley
2016-07-20 21:10               ` [PATCH v4 3/8] doc: show the actual left, right, and boundary marks Philip Oakley
2016-07-20 21:10               ` [PATCH v4 4/8] doc: give headings for the two and three dot notations Philip Oakley
2016-07-21 14:42                 ` Marc Branchaud
2016-07-21 19:54                   ` Philip Oakley
2016-07-21 21:20                     ` Marc Branchaud
2016-07-22 22:46                 ` Junio C Hamano
2016-07-20 21:10               ` [PATCH v4 5/8] doc: gitrevisions - use 'reachable' in page description Philip Oakley
2016-07-20 21:10               ` [PATCH v4 6/8] doc: gitrevisions - clarify 'latter case' is revision walk Philip Oakley
2016-07-20 21:10               ` [PATCH v4 7/8] doc: revisions - define `reachable` Philip Oakley
2016-07-20 21:10               ` [PATCH v4 8/8] doc: revisions - clarify reachability examples Philip Oakley
2016-07-20 22:22               ` [PATCH v4 0/8] Name for A..B ranges? Junio C Hamano
2016-08-11 21:50               ` [PATCH v5 00/12] Update git revisions Philip Oakley
2016-08-11 21:50                 ` [PATCH v5 01/12] doc: use 'symmetric difference' consistently Philip Oakley
2016-08-26 11:33                   ` Jakub Narębski
2016-08-26 16:09                     ` Junio C Hamano
2016-08-11 22:32                 ` [PATCH v5 00/12] Update git revisions Philip Oakley
2016-08-12 23:45                 ` [PATCH v6 " Philip Oakley
2016-08-12 23:45                   ` [PATCH v6 05/12] doc: revisions: extra clarification of <rev>^! notation effects Philip Oakley
2016-08-12 23:45                   ` [PATCH v6 06/12] doc: revisions: single vs multi-parent notation comparison Philip Oakley
2016-08-26 15:30                     ` Jakub Narębski
2016-08-26 16:19                       ` Junio C Hamano
2016-08-12 23:45                   ` [PATCH v6 11/12] doc: revisions: show revision expansion in examples Philip Oakley
2016-08-12 23:45                   ` [PATCH v6 12/12] doc: revisions: sort examples and fix alignment of the unchanged Philip Oakley
2016-08-15 14:30                   ` [PATCH v6 00/12] Update git revisions Marc Branchaud
2016-08-15 15:00                     ` Philip Oakley
2016-08-15 16:55                       ` BUG: indent-with-non-tab always on (was: Re: [PATCH v6 00/12] Update git revisions) Marc Branchaud
2016-08-15 17:54                         ` BUG: indent-with-non-tab always on Marc Branchaud
2016-08-15 17:06                     ` [PATCH v6 00/12] Update git revisions Junio C Hamano
2016-08-31 16:22                   ` Junio C Hamano
2016-08-11 23:03               ` [PATCH v5 " Philip Oakley
2016-08-11 23:03                 ` [PATCH v5 01/12] doc: use 'symmetric difference' consistently Philip Oakley
2016-08-12  7:07               ` [PATCH v5 00/12] Update git revisions Philip Oakley
2016-08-12  7:07                 ` [PATCH v5 01/12] doc: use 'symmetric difference' consistently Philip Oakley
2016-08-12  7:07                 ` [PATCH v5 02/12] doc: revisions - name the left and right sides Philip Oakley
2016-08-12  7:07                 ` [PATCH v5 03/12] doc: show the actual left, right, and boundary marks Philip Oakley
2016-08-12  7:07                 ` [PATCH v5 04/12] doc: revisions: give headings for the two and three dot notations Philip Oakley
2016-08-12  7:10                   ` Jeff King
2016-08-12 14:37                   ` Marc Branchaud
2016-08-12  7:07                 ` [PATCH v5 05/12] doc: revisions: extra clarification of <rev>^! notation effects Philip Oakley
2016-08-12 14:39                   ` Marc Branchaud
2016-08-12 22:17                     ` Philip Oakley
2016-08-12  7:07                 ` [PATCH v5 06/12] doc: revisions: single vs multi-parent notation comparison Philip Oakley
2016-08-12 14:40                   ` Marc Branchaud
2016-08-12 22:23                     ` Philip Oakley
2016-08-12  7:07                 ` [PATCH v5 07/12] doc: gitrevisions - use 'reachable' in page description Philip Oakley
2016-08-12  7:07                 ` [PATCH v5 08/12] doc: gitrevisions - clarify 'latter case' is revision walk Philip Oakley
2016-08-12  7:07                 ` [PATCH v5 09/12] doc: revisions - define `reachable` Philip Oakley
2016-08-28 13:01                   ` Jakub Narębski
2016-08-29 13:21                     ` Philip Oakley
2016-08-29 14:43                       ` Jakub Narębski
2016-08-29 19:27                         ` Philip Oakley
2016-08-12  7:07                 ` [PATCH v5 10/12] doc: revisions - clarify reachability examples Philip Oakley
2016-08-12  7:07                 ` [PATCH v5 11/12] doc: revisions: show revision expansion in examples Philip Oakley
2016-08-12 15:22                   ` Marc Branchaud
2016-08-12 22:45                     ` Philip Oakley
2016-08-12  7:07                 ` [PATCH v5 12/12] doc: revisions: sort examples and fix alignment of the unchanged Philip Oakley
2016-08-12 15:28                 ` [PATCH v5 00/12] Update git revisions Marc Branchaud
2016-08-12 19:20                   ` Philip Oakley
2016-08-12 21:27                     ` Junio C Hamano
2016-06-25 19:49       ` name for A..B ranges? Junio C Hamano
2016-06-27 13:37         ` Philip Oakley
2016-06-27 15:08           ` Junio C Hamano
2016-06-27 15:39             ` Philip Oakley

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).