# HG changeset patch # User Vadim Gelfer # Date 1143853209 28800 # Node ID 5987c1eac2cec3216e5d19553f983acd9cadb393 # Parent 8d9ec30d58bc79bfa3a4a11a006abb11deb65473 support nested repositories. mercurial will not recurse into a subdirectory that contains a .hg directory. it is treated as a separate repository. diff --git a/mercurial/dirstate.py b/mercurial/dirstate.py --- 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): diff --git a/tests/test-nested-repo b/tests/test-nested-repo 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 diff --git a/tests/test-nested-repo.out b/tests/test-nested-repo.out 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