From 8779092716f096278ef7c763e2707111c897f82e Mon Sep 17 00:00:00 2001 From: Marc Strapetz Date: Wed, 13 Dec 2017 22:46:47 +0100 Subject: [PATCH] WorkingTreeIterator should pass FS to submodules Change-Id: I4b7bc6bab449b9e3aebba8170788ff9e4a04195a Signed-off-by: Marc Strapetz --- .../eclipse/jgit/submodule/SubmoduleWalk.java | 22 +++++++++++++++++-- .../jgit/treewalk/WorkingTreeIterator.java | 3 ++- 2 files changed, 22 insertions(+), 3 deletions(-) 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 0e4cd904c..2314cf10d 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/submodule/SubmoduleWalk.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/submodule/SubmoduleWalk.java @@ -223,7 +223,8 @@ public class SubmoduleWalk implements AutoCloseable { */ public static Repository getSubmoduleRepository(final Repository parent, final String path) throws IOException { - return getSubmoduleRepository(parent.getWorkTree(), path); + return getSubmoduleRepository(parent.getWorkTree(), path, + parent.getFS()); } /** @@ -238,6 +239,23 @@ public class SubmoduleWalk implements AutoCloseable { */ public static Repository getSubmoduleRepository(final File parent, final String path) throws IOException { + return getSubmoduleRepository(parent, path, FS.DETECTED); + } + + /** + * Get submodule repository at path, using the specified file system + * abstraction + * + * @param parent + * @param path + * @param fs + * the file system abstraction to be used + * @return repository or null if repository doesn't exist + * @throws IOException + * @since 4.10 + */ + public static Repository getSubmoduleRepository(final File parent, + final String path, FS fs) throws IOException { File subWorkTree = new File(parent, path); if (!subWorkTree.isDirectory()) return null; @@ -245,7 +263,7 @@ public class SubmoduleWalk implements AutoCloseable { try { return new RepositoryBuilder() // .setMustExist(true) // - .setFS(FS.DETECTED) // + .setFS(fs) // .setWorkTree(workTree) // .build(); } catch (RepositoryNotFoundException e) { diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/WorkingTreeIterator.java b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/WorkingTreeIterator.java index 6ad055435..8d02f90ed 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/WorkingTreeIterator.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/WorkingTreeIterator.java @@ -341,7 +341,8 @@ public abstract class WorkingTreeIterator extends AbstractTreeIterator { final Repository submoduleRepo; try { submoduleRepo = SubmoduleWalk.getSubmoduleRepository(directory, - e.getName()); + e.getName(), + repository != null ? repository.getFS() : FS.DETECTED); } catch (IOException exception) { return zeroid; }