Re: Mismatch meaning between git-diff and git-log for the .. (double dot notation) and ... (triple dot notation)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Dec 23, 2019 at 10:02:31AM -0800, Junio C Hamano wrote:
> 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



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux