Support the new repository layout for submodules
When updating a submodule (e.g. during recursive clone) the repository for the submodule should be located at <gitdir>/modules/<submodule-path> whereas the working tree of the submodule should be located at <working-tree>/<submodule-path> (<gitdir> and <working-tree> are associated to the containing repository). Since CloneCommand has learned about specifying a separate gitdir this is easy to implement in SubmoduleUpdateCommand. Change-Id: I9b56a3dfa50f97f6975c2bb7c97b36296f331b64
This commit is contained in:
parent
6e05d98cce
commit
53ff052998
|
@ -410,6 +410,18 @@ public void testCloneRepositoryWithSubmodules() throws Exception {
|
|||
assertEquals(SubmoduleStatusType.INITIALIZED, pathStatus.getType());
|
||||
assertEquals(commit, pathStatus.getHeadId());
|
||||
assertEquals(commit, pathStatus.getIndexId());
|
||||
|
||||
SubmoduleWalk walk = SubmoduleWalk.forIndex(git2.getRepository());
|
||||
assertTrue(walk.next());
|
||||
Repository clonedSub1 = walk.getRepository();
|
||||
addRepoToClose(clonedSub1);
|
||||
assertNotNull(clonedSub1);
|
||||
assertEquals(
|
||||
new File(git2.getRepository().getWorkTree(), walk.getPath()),
|
||||
clonedSub1.getWorkTree());
|
||||
assertEquals(new File(new File(git2.getRepository().getDirectory(),
|
||||
"modules"), walk.getPath()), clonedSub1.getDirectory());
|
||||
walk.release();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -492,6 +504,12 @@ public void testCloneRepositoryWithNestedSubmodules() throws Exception {
|
|||
assertTrue(walk.next());
|
||||
Repository clonedSub1 = walk.getRepository();
|
||||
assertNotNull(clonedSub1);
|
||||
assertEquals(
|
||||
new File(git2.getRepository().getWorkTree(), walk.getPath()),
|
||||
clonedSub1.getWorkTree());
|
||||
assertEquals(new File(new File(git2.getRepository().getDirectory(),
|
||||
"modules"), walk.getPath()),
|
||||
clonedSub1.getDirectory());
|
||||
status = new SubmoduleStatusCommand(clonedSub1);
|
||||
statuses = status.call();
|
||||
clonedSub1.close();
|
||||
|
|
|
@ -42,6 +42,7 @@
|
|||
*/
|
||||
package org.eclipse.jgit.api;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
|
@ -163,6 +164,8 @@ public Collection<String> call() throws InvalidConfigurationException,
|
|||
configure(clone);
|
||||
clone.setURI(url);
|
||||
clone.setDirectory(generator.getDirectory());
|
||||
clone.setGitDir(new File(new File(repo.getDirectory(),
|
||||
Constants.MODULES), generator.getPath()));
|
||||
if (monitor != null)
|
||||
clone.setProgressMonitor(monitor);
|
||||
submoduleRepo = clone.call().getRepository();
|
||||
|
|
|
@ -372,6 +372,13 @@ public final class Constants {
|
|||
*/
|
||||
public static final String GITDIR = "gitdir: ";
|
||||
|
||||
/**
|
||||
* Name of the folder (inside gitDir) where submodules are stored
|
||||
*
|
||||
* @since 3.6
|
||||
*/
|
||||
public static final String MODULES = "modules";
|
||||
|
||||
/**
|
||||
* Create a new digest function for objects.
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue