# HG changeset patch # User Artem Tikhomirov # Date 1340203878 -7200 # Node ID 613c883e360e203f59f9cc28a8deb20650a5c31a # Parent 5311e041d2dd49e5333a3d5999f8c31dea1d9d01 Do not walk into nested repositories at all, ignore not only .hg but whole nested repo diff -r 5311e041d2dd -r 613c883e360e src/org/tmatesoft/hg/util/FileWalker.java --- a/src/org/tmatesoft/hg/util/FileWalker.java Wed Jun 20 16:49:43 2012 +0200 +++ b/src/org/tmatesoft/hg/util/FileWalker.java Wed Jun 20 16:51:18 2012 +0200 @@ -130,7 +130,11 @@ continue; } if (isDir) { - if (!".hg/".equals(path.toString())) { + // do not dive into /.hg and + // if there's .hg/ under f/, it's a nested repository, which shall not be walked into + if (".hg".equals(f.getName()) || new File(f, ".hg").isDirectory()) { + continue; + } else { dirQueue.addLast(f); } } else { diff -r 5311e041d2dd -r 613c883e360e test-data/test-repos.jar Binary file test-data/test-repos.jar has changed diff -r 5311e041d2dd -r 613c883e360e test/org/tmatesoft/hg/test/TestStatus.java --- a/test/org/tmatesoft/hg/test/TestStatus.java Wed Jun 20 16:49:43 2012 +0200 +++ b/test/org/tmatesoft/hg/test/TestStatus.java Wed Jun 20 16:51:18 2012 +0200 @@ -641,6 +641,23 @@ } assertTrue(sc.getErrors().isEmpty()); } + + @Test + public void testNestedRepositoriesAreNotWalkedIn() throws Exception { + repo = Configuration.get().find("status-nested-repo"); + File s2 = new File(repo.getWorkingDir(), "skip/s2/.hg/"); + File s1 = new File(repo.getWorkingDir(), "s1/.hg/"); + File s1b = new File(repo.getWorkingDir(), "s1/b"); + assertTrue("[sanity]", s1.exists() && s1.isDirectory()); + assertTrue("[sanity]", s1b.exists() && s1b.isFile()); + assertTrue("[sanity]", s2.exists() && s2.isDirectory()); + StatusCollector sc = new StatusCollector(); + new HgStatusCommand(repo).all().execute(sc); + List ignored = sc.get(Ignored); + assertEquals(1, ignored.size()); + assertEquals(Path.create("skip/a"), ignored.get(0)); + assertTrue(sc.get(Path.create("s1/b")).isEmpty()); + } /* * With warm-up of previous tests, 10 runs, time in milliseconds