Subject: Re: [PATCH] git-diff.txt: prefer not using <commit>..<commit>

From: Denton Liu <[email-masked]>
Date: Wed, 20 Mar 2019 10:28:09 -0700

Hi Elijah,

Sorry for the late reply, I've been mulling over it for the past couple
of days.

On Mon, Mar 18, 2019 at 10:59:56AM -0700, Elijah Newren wrote:
> Hi Denton,
> 
> Thanks for working on this.  Some thoughts...
> 
> On Sun, Mar 17, 2019 at 4:09 AM Denton Liu <[email-masked]> wrote:
> >
> > The documentation used to consider
> >
> >         git diff <commit> <commit>
> >
> > and
> >
> >         git diff <commit>..<commit>
> >
> > to be equal counterparts. However, rev-list-ish commands also use the
> > <commit>..<commit> notation, but in a logically conflicting manner which
> > was confusing for some users (including me!).
> >
> > Deprecating the notation entirely is not really an option because it
> > would be an arduous process without much end-value. In addition, there
> > are some valid use-cases that we don't want to break.
> 
> Yes, there were multiple people who commented that they liked to
> copy-paste the "A..B" output from fetch/pull in combination with diff
> and log (even though one suggested that this gave the wrong output and
> what they really wanted was "diff A...B").
> 
> However, "removal of functionality" isn't the only form of
> deprecation/warning.  Updating the manpage is another one which you
> implemented, but I'd like to suggest yet another: Prefix the diff with
> a warning message, e.g.
> 
> "WARNING: You ran 'git diff A..B' (which means the same thing as 'git
> diff A B').  Many users confuse 'git diff A..B' and 'git diff A...B'.
> Please see 'git diff --help' for more details."
> 
> Having extra text (e.g. commit message or warning) at the beginning of
> the diff does not prevent tools like patch(1) or git-apply(1) from
> successfully applying it, it still makes sense to humans (and who as
> an added bonus happen to be really good at filtering out common
> messages if they do encounter them more than a few times), and gives
> us a chance in the future to figure out how to potentially extend the
> message to make it a deprecation warning and/or provide details about
> how to change the behavior of '..' to either be an error or behave
> like triple dots or just not warn.
> 
> 
> Elijah

I was originally planning on doing something like this (by warning to
stderr, but your idea actually gets to the user ;) ). The only thing I'm
worried about for a change like this is that it'll be very controversial
since, as we could see anecdotally, a lot of people have trained
themselves to use the .. form.

In terms of backwards compatibility, I think that there's the
possibility of breaking some scripts by doing this change but we could
mitigate this by detecting if we're outputting to a terminal and only
print the message in that case.

Thanks for the suggestion!

Denton