This problem occurred when calling SubmoduleWalk#getModuleName if the first submodule processed has a name and a path which do not match SubmoduleWalk#getModuleName returned the module path instead of the module name. In order to fix this SubmoduleWalk#getModuleName needs to ensure that the modules config is loaded. Bug: 565776 Change-Id: I36ce1fbc64c4849f9d8e39864b825c6e28d344f8 Signed-off-by: John Dallaway <john@dallaway.org.uk> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>tags/v5.10.0.202011041322-m2
@@ -455,6 +455,7 @@ public class SubmoduleWalkTest extends RepositoryTestCase { | |||
final CanonicalTreeParser p = new CanonicalTreeParser(); | |||
p.reset(testDb.getRevWalk().getObjectReader(), commit.getTree()); | |||
try (SubmoduleWalk gen = SubmoduleWalk.forPath(db, p, "sub")) { | |||
assertEquals(arbitraryName, gen.getModuleName()); | |||
assertEquals(path, gen.getPath()); | |||
assertEquals(subId, gen.getObjectId()); | |||
assertEquals(new File(db.getWorkTree(), path), gen.getDirectory()); |
@@ -20,8 +20,10 @@ import java.util.Collections; | |||
import java.util.List; | |||
import org.eclipse.jgit.api.errors.GitAPIException; | |||
import org.eclipse.jgit.api.errors.InvalidConfigurationException; | |||
import org.eclipse.jgit.api.errors.JGitInternalException; | |||
import org.eclipse.jgit.api.errors.NoHeadException; | |||
import org.eclipse.jgit.errors.ConfigInvalidException; | |||
import org.eclipse.jgit.internal.JGitText; | |||
import org.eclipse.jgit.lib.ConfigConstants; | |||
import org.eclipse.jgit.lib.ObjectId; | |||
@@ -119,6 +121,8 @@ public class SubmoduleDeinitCommand | |||
} | |||
} | |||
return results; | |||
} catch (ConfigInvalidException e) { | |||
throw new InvalidConfigurationException(e.getMessage(), e); | |||
} catch (IOException e) { | |||
throw new JGitInternalException(e.getMessage(), e); | |||
} |
@@ -657,8 +657,11 @@ public class SubmoduleWalk implements AutoCloseable { | |||
* | |||
* @since 4.10 | |||
* @return name | |||
* @throws ConfigInvalidException | |||
* @throws IOException | |||
*/ | |||
public String getModuleName() { | |||
public String getModuleName() throws IOException, ConfigInvalidException { | |||
lazyLoadModulesConfig(); | |||
return getModuleName(path); | |||
} | |||