diff options
author | Dave Borowitz <dborowitz@google.com> | 2012-06-25 10:46:36 -0700 |
---|---|---|
committer | Kevin Sawicki <kevin@github.com> | 2012-06-25 10:46:36 -0700 |
commit | 2444aa231a3a9618a413b7e42e8120b42258702d (patch) | |
tree | 20eeef09e87d9940c3ab9812408dada1d10b0d56 | |
parent | 1bf5b9c7a8d2d6c254cdb022100e9172bae6cf56 (diff) | |
download | jgit-2444aa231a3a9618a413b7e42e8120b42258702d.tar.gz jgit-2444aa231a3a9618a413b7e42e8120b42258702d.zip |
Use the working tree's .gitmodules in SubmoduleWalk.forIndex()
This was broken in fe1f1b8f8aba60fdd1ad6f0f72e9c9180978cc60, which
preferred the index over the working tree when both were present.
Change-Id: I97dcf9a088adcbd0187fa7eec9ef34445ce3a981
Signed-off-by: Kevin Sawicki <kevin@github.com>
-rw-r--r-- | org.eclipse.jgit.test/tst/org/eclipse/jgit/submodule/SubmoduleWalkTest.java | 6 | ||||
-rw-r--r-- | org.eclipse.jgit/src/org/eclipse/jgit/submodule/SubmoduleWalk.java | 28 |
2 files changed, 12 insertions, 22 deletions
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 0669dd1993..cb3c7d88f0 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 @@ -299,13 +299,13 @@ public class SubmoduleWalkTest extends RepositoryTestCase { final Config gitmodules = new Config(); gitmodules.setString(CONFIG_SUBMODULE_SECTION, path, CONFIG_KEY_PATH, "sub"); + // Different config in the index should be overridden by the working tree. gitmodules.setString(CONFIG_SUBMODULE_SECTION, path, CONFIG_KEY_URL, - "git://example.com/sub"); + "git://example.com/bad"); final RevBlob gitmodulesBlob = testDb.blob(gitmodules.toText()); - // Different config in the working tree. gitmodules.setString(CONFIG_SUBMODULE_SECTION, path, CONFIG_KEY_URL, - "git://example.com/bad"); + "git://example.com/sub"); writeTrashFile(DOT_GIT_MODULES, gitmodules.toText()); DirCache cache = db.lockDirCache(); 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 323965f7cc..e8022b69de 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/submodule/SubmoduleWalk.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/submodule/SubmoduleWalk.java @@ -94,8 +94,6 @@ public class SubmoduleWalk { try { DirCache index = repository.readDirCache(); generator.setTree(new DirCacheIterator(index)); - generator.setRootTree(new DirCacheIterator(index)); - generator.useWorkingTree = true; } catch (IOException e) { generator.release(); throw e; @@ -304,8 +302,6 @@ public class SubmoduleWalk { private String path; - private boolean useWorkingTree; - /** * Create submodule generator * @@ -388,7 +384,14 @@ public class SubmoduleWalk { * @throws ConfigInvalidException */ public SubmoduleWalk loadModulesConfig() throws IOException, ConfigInvalidException { - if (rootTree != null) { + if (rootTree == null) { + File modulesFile = new File(repository.getWorkTree(), + Constants.DOT_GIT_MODULES); + FileBasedConfig config = new FileBasedConfig(modulesFile, + repository.getFS()); + config.load(); + modulesConfig = config; + } else { TreeWalk configWalk = new TreeWalk(repository); try { configWalk.addTree(rootTree); @@ -411,10 +414,7 @@ public class SubmoduleWalk { return this; } } - if (!useWorkingTree) { - modulesConfig = new Config(); - return this; - } + modulesConfig = new Config(); } finally { if (idx > 0) rootTree.next(idx); @@ -423,16 +423,6 @@ public class SubmoduleWalk { configWalk.release(); } } - if (repository.isBare()) { - modulesConfig = new Config(); - } else { - File modulesFile = new File(repository.getWorkTree(), - Constants.DOT_GIT_MODULES); - FileBasedConfig config = new FileBasedConfig(modulesFile, - repository.getFS()); - config.load(); - modulesConfig = config; - } return this; } |