勘違いしてた。hgやgitが管理しないのはファイル名じゃなくてディレクトリ名だ。

$ hg init repo_a
$ cd repo_a/
$ mkdir dir_a
$ cat >dir_a/a
aaa
$ hg add dir_a/a
$ hg commit -m "add a"
$ hg clone . ../repo_b
$ hg mv dir_a dir_b
$ hg commit -m "rename dir"
$ cat >>dir_b/a
bbb
$ hg commit -m "add bbb"
$ hg diff -r0 dir_b/a
diff -r 6573e09a792d dir_b/a
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/dir_b/a Sun Apr 26 23:39:25 2009 +0900
@@ -0,0 +1,2 @@
+aaa
+bbb

gitは使う機会ないからディレクトリ名の変更を追跡しないってのも勘違いかもしれん。