aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Borowitz2012-06-25 13:46:36 (EDT)
committerKevin Sawicki2012-06-25 13:46:36 (EDT)
commit2444aa231a3a9618a413b7e42e8120b42258702d (patch)
tree20eeef09e87d9940c3ab9812408dada1d10b0d56
parent1bf5b9c7a8d2d6c254cdb022100e9172bae6cf56 (diff)
downloadjgit-2444aa231a3a9618a413b7e42e8120b42258702d.zip
jgit-2444aa231a3a9618a413b7e42e8120b42258702d.tar.gz
jgit-2444aa231a3a9618a413b7e42e8120b42258702d.tar.bz2
Use the working tree's .gitmodules in SubmoduleWalk.forIndex()refs/changes/02/6502/4
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.java6
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/submodule/SubmoduleWalk.java28
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 0669dd1..cb3c7d8 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 323965f..e8022b6 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;
}