support nested repositories.
mercurial will not recurse into a subdirectory that contains a .hg
directory. it is treated as a separate repository.
--- a/mercurial/dirstate.py Fri Mar 31 10:52:56 2006 -0800
+++ b/mercurial/dirstate.py Fri Mar 31 17:00:09 2006 -0800
@@ -340,7 +340,13 @@
names.sort()
# nd is the top of the repository dir tree
nd = util.normpath(top[len(self.root) + 1:])
- if nd == '.': nd = ''
+ if nd == '.':
+ nd = ''
+ else:
+ hg = bisect.bisect_left(names, '.hg')
+ if hg < len(names) and names[hg] == '.hg':
+ if os.path.isdir(os.path.join(top, '.hg')):
+ continue
for f in names:
np = util.pconvert(os.path.join(nd, f))
if seen(np):
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-nested-repo Fri Mar 31 17:00:09 2006 -0800
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+hg init a
+cd a
+hg init b
+echo x > b/x
+echo '# should print nothing'
+hg st
+echo '# should print ? b/x'
+hg st b/x
+
+hg add b/x
+
+echo '# should print A b/x'
+hg st
+echo '# should forget b/x'
+hg forget
+echo '# should print nothing'
+hg st b
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-nested-repo.out Fri Mar 31 17:00:09 2006 -0800
@@ -0,0 +1,8 @@
+# should print nothing
+# should print ? b/x
+? b/x
+# should print A b/x
+A b/x
+# should forget b/x
+forgetting b/x
+# should print nothing