From 6eca277d65eb75a34439227e59042aa47b84ae65 Mon Sep 17 00:00:00 2001 From: Rene Pfeuffer Date: Tue, 18 Feb 2020 15:35:49 +0100 Subject: [PATCH] Add truncated flag for hg --- .../scm/repository/spi/javahg/HgFileviewCommand.java | 6 +++++- .../src/main/resources/sonia/scm/hg/ext/fileview.py | 10 ++++++++++ .../sonia/scm/repository/spi/HgBrowseCommandTest.java | 2 ++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/javahg/HgFileviewCommand.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/javahg/HgFileviewCommand.java index 3b74f6b9cb..9ad2995307 100644 --- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/javahg/HgFileviewCommand.java +++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/javahg/HgFileviewCommand.java @@ -60,6 +60,7 @@ import java.util.LinkedList; public class HgFileviewCommand extends AbstractCommand { + public static final char TRUNCATED_MARK = 't'; private boolean disableLastCommit = false; private HgFileviewCommand(Repository repository) @@ -186,7 +187,7 @@ public class HgFileviewCommand extends AbstractCommand HgInputStream stream = launchStream(); FileObject last = null; - while (stream.peek() != -1) { + while (stream.peek() != -1 && stream.peek() != TRUNCATED_MARK) { FileObject file = read(stream); while (!stack.isEmpty()) { @@ -210,6 +211,9 @@ public class HgFileviewCommand extends AbstractCommand return last; } else { // if the stack is not empty, the requested path is a directory + if (stream.read() == TRUNCATED_MARK) { + stack.getLast().setTruncated(true); + } return stack.getLast(); } } diff --git a/scm-plugins/scm-hg-plugin/src/main/resources/sonia/scm/hg/ext/fileview.py b/scm-plugins/scm-hg-plugin/src/main/resources/sonia/scm/hg/ext/fileview.py index ec57192666..7c36a55703 100644 --- a/scm-plugins/scm-hg-plugin/src/main/resources/sonia/scm/hg/ext/fileview.py +++ b/scm-plugins/scm-hg-plugin/src/main/resources/sonia/scm/hg/ext/fileview.py @@ -249,6 +249,15 @@ class File_Printer: self.result_count += 1 return self.result_count == 0 or self.proceedFrom < self.result_count <= self.limit + self.proceedFrom + def isTruncated(self): + return self.result_count > self.limit + self.proceedFrom + + def finish(self): + if self.isTruncated(): + if self.transport: + self.ui.write( "t") + else: + self.ui.write("truncated") class File_Viewer: def __init__(self, revCtx, visitor): @@ -297,3 +306,4 @@ def fileview(ui, repo, **opts): viewer.recursive = opts["recursive"] viewer.sub_repositories = subrepos viewer.view(opts["path"]) + printer.finish() diff --git a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgBrowseCommandTest.java b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgBrowseCommandTest.java index e6c07983bf..3168738252 100644 --- a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgBrowseCommandTest.java +++ b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgBrowseCommandTest.java @@ -191,6 +191,7 @@ public class HgBrowseCommandTest extends AbstractHgCommandTestBase { Collection foList = root.getChildren(); assertThat(foList).extracting("name").containsExactlyInAnyOrder("a.txt", "b.txt"); + assertThat(root.isTruncated()).isTrue(); } @Test @@ -205,6 +206,7 @@ public class HgBrowseCommandTest extends AbstractHgCommandTestBase { Collection foList = root.getChildren(); assertThat(foList).extracting("name").containsExactlyInAnyOrder("c", "f.txt"); + assertThat(root.isTruncated()).isFalse(); } //~--- get methods ----------------------------------------------------------