diff --git a/scm-core/src/main/java/sonia/scm/repository/FileObject.java b/scm-core/src/main/java/sonia/scm/repository/FileObject.java index 7dedebb13a..2f3241bf40 100644 --- a/scm-core/src/main/java/sonia/scm/repository/FileObject.java +++ b/scm-core/src/main/java/sonia/scm/repository/FileObject.java @@ -222,6 +222,10 @@ public class FileObject implements LastModifiedAware, Serializable return directory; } + public boolean isPartialResult() { + return partialResult; + } + //~--- set methods ---------------------------------------------------------- /** @@ -302,6 +306,10 @@ public class FileObject implements LastModifiedAware, Serializable this.subRepository = subRepository; } + public void setPartialResult(boolean partialResult) { + this.partialResult = partialResult; + } + public Collection getChildren() { return unmodifiableCollection(children); } @@ -338,6 +346,8 @@ public class FileObject implements LastModifiedAware, Serializable /** file path */ private String path; + private boolean partialResult = false; + /** sub repository informations */ @XmlElement(name = "subrepository") private SubRepository subRepository; 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 bdeb425d15..06b724d820 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 @@ -210,6 +210,7 @@ public class GitBrowseCommand extends AbstractGitCommand // don't show message and date for directories to improve performance if (!file.isDirectory() &&!request.isDisableLastCommit()) { + file.setPartialResult(true); executor.execute(executionType -> { logger.trace("fetch last commit for {} at {}", path, revId.getName()); RevCommit commit = getLatestCommit(repo, revId, path); @@ -235,6 +236,7 @@ public class GitBrowseCommand extends AbstractGitCommand file.setLength(loader.getSize()); } + file.setPartialResult(false); if (commit != null) { file.setLastModified(GitUtil.getCommitTime(commit)); file.setDescription(commit.getShortMessage()); diff --git a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitBrowseCommandTest.java b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitBrowseCommandTest.java index 03f1e761c7..9b45cda16f 100644 --- a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitBrowseCommandTest.java +++ b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitBrowseCommandTest.java @@ -131,22 +131,27 @@ public class GitBrowseCommandTest extends AbstractGitCommandTestBase { FileObject a = findFile(foList, "a.txt"); FileObject b = findFile(foList, "b.txt"); + assertTrue(a.isPartialResult()); assertNull("expected empty name before commit could have been read", a.getDescription()); assertNull("expected empty date before commit could have been read", a.getLastModified()); + assertTrue(b.isPartialResult()); assertNull("expected empty name before commit could have been read", b.getDescription()); assertNull("expected empty date before commit could have been read", b.getLastModified()); executor.next(); assertEquals(1, updatedResults.size()); + assertFalse(a.isPartialResult()); assertNotNull("expected correct name after commit could have been read", a.getDescription()); assertNotNull("expected correct date after commit could have been read", a.getLastModified()); + assertTrue(b.isPartialResult()); assertNull("expected empty name before commit could have been read", b.getDescription()); assertNull("expected empty date before commit could have been read", b.getLastModified()); executor.next(); assertEquals(2, updatedResults.size()); + assertFalse(b.isPartialResult()); assertNotNull("expected correct name after commit could have been read", b.getDescription()); assertNotNull("expected correct date after commit could have been read", b.getLastModified()); }