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 static File getSubmoduleDirectory(final Repository parent, */ 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 static Repository getSubmoduleRepository(final Repository parent, */ 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 static Repository getSubmoduleRepository(final File parent, 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 @@ protected byte[] idSubmodule(File directory, Entry e) { final Repository submoduleRepo; try { submoduleRepo = SubmoduleWalk.getSubmoduleRepository(directory, - e.getName()); + e.getName(), + repository != null ? repository.getFS() : FS.DETECTED); } catch (IOException exception) { return zeroid; }