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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html