Skip to content

Commit a1acdb2

Browse files
vladakVladimir Kotal
authored andcommitted
set initial depth correctly when calling addRepositories via project Message
fixes #1747
1 parent a9ef838 commit a1acdb2

File tree

4 files changed

+40
-17
lines changed

4 files changed

+40
-17
lines changed

src/org/opensolaris/opengrok/configuration/Configuration.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,13 @@ public final class Configuration {
195195
private boolean handleHistoryOfRenamedFiles;
196196

197197
public static final double defaultRamBufferSize = 16;
198+
199+
/**
200+
* The directory hierarchy depth to limit the scanning for repositories.
201+
* E.g. if the /mercurial/ directory (relative to source root) is a repository
202+
* and /mercurial/usr/closed/ is sub-repository, the latter will be discovered
203+
* only if the depth is set to 3 or greater.
204+
*/
198205
public static final int defaultScanningDepth = 3;
199206

200207
/**

src/org/opensolaris/opengrok/configuration/messages/ProjectMessage.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ private List<RepositoryInfo> getRepositoriesInDir(RuntimeEnvironment env, File p
9191
// since addRepositories() calls getRepository() for each of
9292
// the repos.
9393
hg.addRepositories(new File[]{projDir}, repos,
94-
env.getIgnoredNames(), env.getScanningDepth());
94+
env.getIgnoredNames());
9595

9696
return repos;
9797
}

src/org/opensolaris/opengrok/history/HistoryGuru.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,7 @@ public Map<String, Date> getLastModifiedTimes(File directory)
324324
return Collections.emptyMap();
325325
}
326326

327-
public void addRepositories(File[] files, Collection<RepositoryInfo> repos,
327+
private void addRepositories(File[] files, Collection<RepositoryInfo> repos,
328328
IgnoredNames ignoredNames, int depth) {
329329
addRepositories(files, repos, ignoredNames, true, depth);
330330
}
@@ -409,6 +409,18 @@ private void addRepositories(File[] files, Collection<RepositoryInfo> repos,
409409
}
410410
}
411411

412+
/**
413+
* recursively search for repositories in given directories.
414+
*
415+
* @param files list of files to check if they contain a repo
416+
* @param repos list of found repos
417+
* @param ignoredNames what files to ignore
418+
*/
419+
public void addRepositories(File[] files, Collection<RepositoryInfo> repos,
420+
IgnoredNames ignoredNames) {
421+
addRepositories(files, repos, ignoredNames, true, 0);
422+
}
423+
412424
/**
413425
* Search through the all of the directories and add all of the source
414426
* repositories found.
@@ -418,7 +430,7 @@ private void addRepositories(File[] files, Collection<RepositoryInfo> repos,
418430
public void addRepositories(String dir) {
419431
List<RepositoryInfo> repos = new ArrayList<>();
420432
addRepositories(new File[]{new File(dir)}, repos,
421-
RuntimeEnvironment.getInstance().getIgnoredNames(), 0);
433+
RuntimeEnvironment.getInstance().getIgnoredNames());
422434
RuntimeEnvironment.getInstance().setRepositories(repos);
423435
invalidateRepositories(repos);
424436
}

test/org/opensolaris/opengrok/configuration/messages/ProjectMessageTest.java

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -62,24 +62,16 @@ public class ProjectMessageTest {
6262
private static TestRepository repository = new TestRepository();
6363
private final String ctagsProperty = "org.opensolaris.opengrok.analysis.Ctags";
6464

65-
@BeforeClass
66-
public static void setUpClass() throws Exception {
67-
repository = new TestRepository();
68-
repository.create(HistoryGuru.class.getResourceAsStream(
69-
"repositories.zip"));
70-
}
71-
72-
@AfterClass
73-
public static void tearDownClass() throws Exception {
74-
repository.destroy();
75-
}
76-
7765
@Before
7866
public void setUp() throws IOException {
7967
Assume.assumeTrue(new MercurialRepository().isWorking());
8068
Assume.assumeTrue(new SubversionRepository().isWorking());
8169
Assume.assumeTrue(new GitRepository().isWorking());
8270

71+
repository = new TestRepository();
72+
repository.create(HistoryGuru.class.getResourceAsStream(
73+
"repositories.zip"));
74+
8375
env = RuntimeEnvironment.getInstance();
8476
env.removeAllMessages();
8577
env.setSourceRoot(repository.getSourceRoot());
@@ -96,6 +88,8 @@ public void tearDown() {
9688
env.setProjects(new ConcurrentHashMap<>());
9789
env.setRepositories(new ArrayList<RepositoryInfo>());
9890
env.getProjectRepositoriesMap().clear();
91+
92+
repository.destroy();
9993
}
10094

10195
@Test
@@ -145,10 +139,20 @@ public void testAdd() throws Exception {
145139
m.addTag("mercurial");
146140
Assert.assertTrue(env.getRepositories().isEmpty());
147141
Assert.assertTrue(env.getProjects().isEmpty());
142+
143+
// Add a sub-repository.
144+
File mercurialRoot = new File(repository.getSourceRoot() + File.separator + "mercurial");
145+
File subDir = new File(mercurialRoot, "usr");
146+
Assert.assertTrue(subDir.mkdir());
147+
MercurialRepositoryTest.runHgCommand(mercurialRoot,
148+
"clone", mercurialRoot.getAbsolutePath(),
149+
mercurialRoot.getAbsolutePath() + File.separator + "usr" + File.separator + "closed");
150+
151+
env.setScanningDepth(3);
148152
m.apply(env);
149153
Assert.assertTrue(env.getProjects().containsKey("mercurial"));
150154
Assert.assertEquals(1, env.getProjects().size());
151-
Assert.assertEquals(1, env.getRepositories().size());
155+
Assert.assertEquals(2, env.getRepositories().size());
152156

153157
// Add more projects and check that they have been added incrementally.
154158
// At the same time, it checks that multiple projects can be added
@@ -158,7 +162,7 @@ public void testAdd() throws Exception {
158162
m.addTag("svn");
159163
m.apply(env);
160164
Assert.assertEquals(3, env.getProjects().size());
161-
Assert.assertEquals(3, env.getRepositories().size());
165+
Assert.assertEquals(4, env.getRepositories().size());
162166
Assert.assertTrue(env.getProjects().containsKey("git"));
163167
Assert.assertTrue(env.getProjects().containsKey("svn"));
164168
}

0 commit comments

Comments
 (0)