From f68423a5d80bb7728914c5e328328e1ee32c3276 Mon Sep 17 00:00:00 2001 From: Rene Pfeuffer Date: Tue, 18 Feb 2020 08:22:36 +0100 Subject: [PATCH] Implement request limit for git --- .../java/sonia/scm/repository/spi/GitBrowseCommand.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBrowseCommand.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBrowseCommand.java index e8ef5a7a33..5158a74ecb 100644 --- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBrowseCommand.java +++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBrowseCommand.java @@ -110,6 +110,8 @@ public class GitBrowseCommand extends AbstractGitCommand private BrowserResult browserResult; + private int resultCount = 0; + public GitBrowseCommand(GitContext context, Repository repository, LfsBlobStoreFactory lfsBlobStoreFactory, SyncAsyncExecutor executor) { super(context, repository); this.lfsBlobStoreFactory = lfsBlobStoreFactory; @@ -251,7 +253,7 @@ public class GitBrowseCommand extends AbstractGitCommand private FileObject findChildren(FileObject parent, org.eclipse.jgit.lib.Repository repo, BrowseCommandRequest request, ObjectId revId, TreeWalk treeWalk) throws IOException { List files = Lists.newArrayList(); - while (treeWalk.next()) + while (treeWalk.next() && resultCount < request.getLimit()) { FileObject fileObject = createFileObject(repo, request, revId, treeWalk); @@ -262,6 +264,8 @@ public class GitBrowseCommand extends AbstractGitCommand files.add(fileObject); + ++resultCount; + if (request.isRecursive() && fileObject.isDirectory()) { treeWalk.enterSubtree(); FileObject rc = findChildren(fileObject, repo, request, revId, treeWalk);