Re: Mismatch meaning between git-diff and git-log for the .. (double dot notation) and ... (triple dot notation)
- From
- Kevin Daudt <kdaudt@alpinelinux.org>
- Date
- Dec 23, 2019, 18:29 UTC
- Message-ID
- <20191223182939.GB676947@alpha>
- In-Reply-To
- <xmqqy2v26hu0.fsf@gitster-ct.c.googlers.com>
On Mon, Dec 23, 2019 at 10:02:31AM -0800, Junio C Hamano wrote:
Show 23 quoted lines
> Please unlearn dot-dot and three-dots when using "git diff", which > is not about ranges but about comparing two endpoints. If we were > reinventing Git today from scratch, we would make "git diff A..B" an > error. You can consider it a bug that the command accepts a range > notation, but this will not change any time soon without a large > fight to find and fix uses of the syntax in scripts by longtime Git > users have written over the years. > > Allowing dot-dot on the command line of "git diff", instead of > diagnosing them as errors and dying, was a stupid mistake we (well, > mostly Linus, but I am willing to take the blame too) made due to > laziness when we reused the machinery, which we invented to parse > the command line of "log" family of commands to specify ranges, to > parse the command line of "diff", which accidentally ended up > allowing the syntax for ranges where it shouldn't be allowed. > > And worse yet, since there was only dot-dot and three-dots came much > later, "git diff A..B" ended up comparing the endpoints A and B, > because there didn't even A...B notation exist. > > This is not limited to you but any user of modern Git is better off > to pretend "git diff A..B" does not exist; please unlearn dot-dot > and three-dots when using "git diff" and you'd be happier.
I agreen that you should not use `A..B`, but what is wrong with `A...B`? The alternative is a lot more verbose.
git diff $(git merge-base A B) B
Kevin