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

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