From f4b4dae2be1f6bb7e09a0c660e7fc8e093fb0617 Mon Sep 17 00:00:00 2001 From: John Dallaway Date: Wed, 2 Sep 2020 14:15:23 +0100 Subject: [PATCH] Ensure .gitmodules is loaded when accessing submodule name 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 Signed-off-by: Matthias Sohn --- .../tst/org/eclipse/jgit/submodule/SubmoduleWalkTest.java | 1 + .../src/org/eclipse/jgit/api/SubmoduleDeinitCommand.java | 4 ++++ .../src/org/eclipse/jgit/submodule/SubmoduleWalk.java | 5 ++++- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/submodule/SubmoduleWalkTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/submodule/SubmoduleWalkTest.java index 70175c820..ea994f06a 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/submodule/SubmoduleWalkTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/submodule/SubmoduleWalkTest.java @@ -455,6 +455,7 @@ public void apply(DirCacheEntry ent) { 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()); diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/SubmoduleDeinitCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/SubmoduleDeinitCommand.java index ac17d3a64..f4b8ac2e0 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/api/SubmoduleDeinitCommand.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/SubmoduleDeinitCommand.java @@ -20,8 +20,10 @@ 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 Collection call() throws GitAPIException { } } return results; + } catch (ConfigInvalidException e) { + throw new InvalidConfigurationException(e.getMessage(), e); } catch (IOException e) { throw new JGitInternalException(e.getMessage(), e); } diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/submodule/SubmoduleWalk.java b/org.eclipse.jgit/src/org/eclipse/jgit/submodule/SubmoduleWalk.java index 0ba5eb542..bf77021b0 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/submodule/SubmoduleWalk.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/submodule/SubmoduleWalk.java @@ -657,8 +657,11 @@ public void setBuilderFactory(RepositoryBuilderFactory factory) { * * @since 4.10 * @return name + * @throws ConfigInvalidException + * @throws IOException */ - public String getModuleName() { + public String getModuleName() throws IOException, ConfigInvalidException { + lazyLoadModulesConfig(); return getModuleName(path); }