diff --git a/plugins/scm-git-plugin/src/main/java/sonia/scm/repository/GitRepositoryBrowser.java b/plugins/scm-git-plugin/src/main/java/sonia/scm/repository/GitRepositoryBrowser.java index cb7cf7c70d..e7719c6801 100644 --- a/plugins/scm-git-plugin/src/main/java/sonia/scm/repository/GitRepositoryBrowser.java +++ b/plugins/scm-git-plugin/src/main/java/sonia/scm/repository/GitRepositoryBrowser.java @@ -188,9 +188,38 @@ public class GitRepositoryBrowser implements RepositoryBrowser List files = new ArrayList(); - while (treeWalk.next()) + if (Util.isEmpty(path)) { - files.add(createFileObject(repo, revId, treeWalk)); + while (treeWalk.next()) + { + files.add(createFileObject(repo, revId, treeWalk)); + } + } + else + { + String[] parts = path.split("/"); + int current = 0; + int limit = parts.length; + + while (treeWalk.next()) + { + String name = treeWalk.getNameString(); + + if (current >= limit) + { + String p = treeWalk.getPathString(); + + if (p.split("/").length > limit) + { + files.add(createFileObject(repo, revId, treeWalk)); + } + } + else if (name.equalsIgnoreCase(parts[current])) + { + current++; + treeWalk.enterSubtree(); + } + } } result.setFiles(files);