diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CloneCommandTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CloneCommandTest.java index 3b2fa6c37..72cc51be9 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CloneCommandTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CloneCommandTest.java @@ -391,6 +391,17 @@ public void testCloneRepositoryWithSubmodules() throws Exception { git.add().addFilepattern(path) .addFilepattern(Constants.DOT_GIT_MODULES).call(); git.commit().setMessage("adding submodule").call(); + try (SubmoduleWalk walk = SubmoduleWalk.forIndex(git.getRepository())) { + assertTrue(walk.next()); + Repository subRepo = walk.getRepository(); + addRepoToClose(subRepo); + assertNotNull(subRepo); + assertEquals( + new File(git.getRepository().getWorkTree(), walk.getPath()), + subRepo.getWorkTree()); + assertEquals(new File(new File(git.getRepository().getDirectory(), + "modules"), walk.getPath()), subRepo.getDirectory()); + } File directory = createTempDirectory("testCloneRepositoryWithSubmodules"); CloneCommand clone = Git.cloneRepository(); diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/SubmoduleAddCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/SubmoduleAddCommand.java index 06c8f414e..fbb24c157 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/api/SubmoduleAddCommand.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/SubmoduleAddCommand.java @@ -173,6 +173,8 @@ public Repository call() throws GitAPIException { CloneCommand clone = Git.cloneRepository(); configure(clone); clone.setDirectory(moduleDirectory); + clone.setGitDir(new File(new File(repo.getDirectory(), + Constants.MODULES), path)); clone.setURI(resolvedUri); if (monitor != null) clone.setProgressMonitor(monitor);