I think it was mistake to let the -r flag accept two revisions in
hg diff in 98633e60067c (Support for 0, 1, or 2 diff revs,
2005-05-07). The command clearly acts on two revisions and having a
single flag to indicate which those are is unclear. It got worse when
it started accepting revsets as input.
This patch introduces --from and --to flags, each taking a single
revision and each defaulting to the working copy. That means that `hg
diff --from . behaves like hg diff` and hg diff --to . behaves
like hg diff --reverse.
In addition to clarifying the direction, it also makes it so one won't
make the mistake of thinking that hg diff -r "date('yesterday')"
will show differences since (some commit) yesterday when it will
actually depend on the how many commits were made yesterday (it works
if exactly one commit was made). (Fun fact: hg help diff -v includes
that broken case, incorrectly claiming that it shows changes "relative
to the last change on some date".)
I think -r should be deprecated, but I understand that it's used in
way too much documentation and in people's muscle memory for that to
be realistic.
How about deprecating the --rev flag as a followup?