git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: "Philip Oakley" <philipoakley@iee.org>
To: "Junio C Hamano" <gitster@pobox.com>
Cc: "GitList" <git@vger.kernel.org>, "Jeff King" <peff@peff.net>
Subject: Re: [PATCH v2 4/4] doc: clarify that `^r1` will exclude `r1` itself
Date: Sun, 10 Jul 2016 22:17:56 +0100	[thread overview]
Message-ID: <A584078D859245AABA92ADC75B82A77A@PhilipOakley> (raw)
In-Reply-To: xmqqziq1ufmk.fsf@gitster.mtv.corp.google.com

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 


  reply	other threads:[~2016-07-10 21:18 UTC|newest]

Thread overview: 107+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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 [this message]
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

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=A584078D859245AABA92ADC75B82A77A@PhilipOakley \
    --to=philipoakley@iee.org \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=peff@peff.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).