Hi,

The 'git diff <commit> <commit>' form is perfectly fine: I can
understand that diff takes two commit^{tree}s to compare.
Unfortunately, it also shows off the examples 'git diff A..B' and 'git
diff A...B', where A..B and A...B do not correspond to the meaning
specified in gitrevisions.txt.  There's a note in the documentation
saying this, but I'm very unhappy.

I can understand that rev-parse parses A..B into ^A B.  'git diff
A..B' is the same as 'git diff A B', 'git diff B ^A', and 'git diff ^A
B'?  (Yeah, I saw the code and found out that it swaps the arguments
only if the second argument is UNINTERESTING)

rev-parse parses A...B into A B ^$(merge-base --all A B).  But 'git
diff A...B' means 'git diff $(git merge-base A B) B'?  And the
merge-base is picked at random (found out that from the code)?

What about other things like 'git diff ^A ^B' and 'git diff A^!'?  Why
is diff so inconsistent with everything else?  Why are A..B and A...B
almost coded in as special cases?  What should we do to improve the
situation?

Thanks for listening.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to