changeset 2061:5987c1eac2ce

support nested repositories. mercurial will not recurse into a subdirectory that contains a .hg directory. it is treated as a separate repository.
author Vadim Gelfer <vadim.gelfer@gmail.com>
date Fri, 31 Mar 2006 17:00:09 -0800
parents 8d9ec30d58bc
children 5460f0196f77
files mercurial/dirstate.py tests/test-nested-repo tests/test-nested-repo.out
diffstat 3 files changed, 34 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/dirstate.py
+++ b/mercurial/dirstate.py
@@ -340,7 +340,13 @@ class dirstate(object):
                 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):
new file mode 100755
--- /dev/null
+++ b/tests/test-nested-repo
@@ -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
new file mode 100644
--- /dev/null
+++ b/tests/test-nested-repo.out
@@ -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