Mercurial diff can be wrong if the previous changeset isn't the parent
Mercurial is DAG-based DVCS.
Before r4662, Redmine runs "hg diff -r 4661 -r 4662" for http://www.redmine.org/projects/redmine/repository/revisions/4662/diff .
If r4661 is not parent of r4662, diff is wrong.
This is TortoiseHg 1.9 image of Redmine 1.1 Mercurial test repository.
Parent of revision 16 is revision 6.