subrepo: lazily update git's local tracking branches
This continues the strategy of separation between hg pull and hg update in
git subrepos by only dealing with git's branches on an update. This behavior
tries to cover the bare essentials of the semantics of git pull in the subrepo
when the parent repo does hg pull and hg update.
http://mercurial.selenic.com/bts/issue322
File replaced with directory:
$ hg init a
$ cd a
$ echo a > a
$ hg commit -Ama
adding a
$ rm a
$ mkdir a
$ echo a > a/a
Should fail - would corrupt dirstate:
$ hg add a/a
abort: file 'a' in dirstate clashes with 'a/a'
[255]
$ cd ..
Directory replaced with file:
$ hg init c
$ cd c
$ mkdir a
$ echo a > a/a
$ hg commit -Ama
adding a/a
$ rm -r a
$ echo a > a
Should fail - would corrupt dirstate:
$ hg add a
abort: directory 'a' already in dirstate
[255]
$ cd ..
Directory replaced with file:
$ hg init d
$ cd d
$ mkdir b
$ mkdir b/c
$ echo a > b/c/d
$ hg commit -Ama
adding b/c/d
$ rm -r b
$ echo a > b
Should fail - would corrupt dirstate:
$ hg add b
abort: directory 'b' already in dirstate
[255]