Merge changes from topic "jgit-as-submodule" * changes: Format build files using buildifier Link to JGit source as git submodule Rename some build rules to meet expectation in JGit bazel build Synchronize status command between gerrit and gitiles
diff --git a/.bazelrc b/.bazelrc index 52d8749..b481c64 100644 --- a/.bazelrc +++ b/.bazelrc
@@ -3,7 +3,7 @@ build --experimental_strict_action_env build --action_env=PATH build --disk_cache=~/.gerritcodereview/bazel-cache/cas -build --java_toolchain //tools:error_prone_warnings_toolchain +build --java_toolchain //tools:error_prone_warnings_toolchain_java11 test --build_tests_only test --test_output=errors
diff --git a/Documentation/markdown.md b/Documentation/markdown.md index e6b766c..4c76388 100644 --- a/Documentation/markdown.md +++ b/Documentation/markdown.md
@@ -446,7 +446,7 @@ PNG (`*.png`), JPEG (`*.jpg` or `*.jpeg`), GIF (`*.gif`) and WebP (`*.webp`) image formats are supported when referenced from the Git repository. -Unsupported extensions or files larger than [image size](#Image-size) +Unsupported extensions or files larger than [image size](config.md#Image-size) limit (default 256K) will display a broken image. *** note
diff --git a/java/com/google/gitiles/LogServlet.java b/java/com/google/gitiles/LogServlet.java index c738f0e..645264b 100644 --- a/java/com/google/gitiles/LogServlet.java +++ b/java/com/google/gitiles/LogServlet.java
@@ -230,7 +230,7 @@ walk.setFirstParent(true); } if (isTrue(view, TOPO_ORDER_PARAM)) { - walk.sort(RevSort.TOPO, true); + walk.sort(RevSort.TOPO_KEEP_BRANCH_TOGETHER, true); } if (isTrue(view, REVERSE_PARAM)) { walk.sort(RevSort.REVERSE, true);
diff --git a/java/com/google/gitiles/TreeSoyData.java b/java/com/google/gitiles/TreeSoyData.java index e1aeb21..985edfa 100644 --- a/java/com/google/gitiles/TreeSoyData.java +++ b/java/com/google/gitiles/TreeSoyData.java
@@ -73,8 +73,22 @@ return lastSlash >= 0 ? "..." + target.substring(lastSlash) : target; } - static int sortByType(Map<String, String> m1, Map<String, String> m2) { - return TYPE_WEIGHT.get(m1.get("type")).compareTo(TYPE_WEIGHT.get(m2.get("type"))); + static String stripEndingSolidus(String p) { + return p.endsWith("/") ? p.substring(0, p.length() - 1) : p; + } + + static int sortByTypeAlpha(Map<String, String> m1, Map<String, String> m2) { + int weightDiff = TYPE_WEIGHT.get(m1.get("type")).compareTo(TYPE_WEIGHT.get(m2.get("type"))); + if (weightDiff == 0) { + String s1 = m1.get("name"); + String s2 = m2.get("name"); + if (m1.get("type").equals("TREE")) { + s1 = stripEndingSolidus(s1); + s2 = stripEndingSolidus(s2); + } + return s1.compareToIgnoreCase(s2); + } + return weightDiff; } private final ObjectReader reader; @@ -141,7 +155,7 @@ entries.add(entry); } - entries.sort(TreeSoyData::sortByType); + entries.sort(TreeSoyData::sortByTypeAlpha); Map<String, Object> data = Maps.newHashMapWithExpectedSize(3); data.put("sha", treeId.name());
diff --git a/javatests/com/google/gitiles/LogServletTest.java b/javatests/com/google/gitiles/LogServletTest.java index 7232439..4ef7a4d 100644 --- a/javatests/com/google/gitiles/LogServletTest.java +++ b/javatests/com/google/gitiles/LogServletTest.java
@@ -80,6 +80,24 @@ } @Test + public void topoKeepBranchTogetherLog() throws Exception { + RevCommit a = repo.update("master", repo.commit().add("foo", "foo\n")); + RevCommit b1 = repo.update("master", repo.commit().parent(a).add("foo", "foo3\n")); + RevCommit c = repo.update("master", repo.commit().parent(a).add("foo", "foo2\n")); + RevCommit b2 = repo.update("master", repo.commit().parent(b1).add("foo", "foo4\n")); + RevCommit d = repo.update("master", repo.commit().parent(c).parent(b2).add("foo", "foo5\n")); + + Log response = buildJson(LOG, "/repo/+log/master", "topo-order"); + assertThat(response.log).hasSize(5); + + verifyJsonCommit(response.log.get(0), d); + verifyJsonCommit(response.log.get(1), b2); + verifyJsonCommit(response.log.get(2), b1); + verifyJsonCommit(response.log.get(3), c); + verifyJsonCommit(response.log.get(4), a); + } + + @Test public void follow() throws Exception { String contents = "contents"; RevCommit c1 = repo.branch("master").commit().add("foo", contents).create();
diff --git a/javatests/com/google/gitiles/TreeSoyDataTest.java b/javatests/com/google/gitiles/TreeSoyDataTest.java index cafe4e2..75ae771 100644 --- a/javatests/com/google/gitiles/TreeSoyDataTest.java +++ b/javatests/com/google/gitiles/TreeSoyDataTest.java
@@ -17,11 +17,11 @@ import static com.google.common.truth.Truth.assertThat; import static com.google.gitiles.TreeSoyData.getTargetDisplayName; import static com.google.gitiles.TreeSoyData.resolveTargetUrl; -import static com.google.gitiles.TreeSoyData.sortByType; +import static com.google.gitiles.TreeSoyData.sortByTypeAlpha; import com.google.common.base.Strings; -import java.util.Map; import java.util.HashMap; +import java.util.Map; import org.eclipse.jgit.lib.ObjectId; import org.junit.Test; import org.junit.runner.RunWith; @@ -70,22 +70,44 @@ @Test public void sortByTypeSortsCorrect() throws Exception { - Map<String, String> m1 = new HashMap<String, String>(); - Map<String, String> m2 = new HashMap<String, String>(); - Map<String, String> m3 = new HashMap<String, String>(); - Map<String, String> m4 = new HashMap<String, String>(); - Map<String, String> m5 = new HashMap<String, String>(); + Map<String, String> m1 = new HashMap<>(); + Map<String, String> m2 = new HashMap<>(); + Map<String, String> m3 = new HashMap<>(); + Map<String, String> m4 = new HashMap<>(); + Map<String, String> m5 = new HashMap<>(); + Map<String, String> m6 = new HashMap<>(); m1.put("type", "TREE"); + m1.put("name", "aa"); m2.put("type", "TREE"); + m2.put("name", "BB"); m3.put("type", "SYMLINK"); m4.put("type", "REGULAR_FILE"); m5.put("type", "GITLINK"); - assertThat(sortByType(m1, m2)).isEqualTo(0); - assertThat(sortByType(m2, m3)).isEqualTo(-1); - assertThat(sortByType(m3, m4)).isEqualTo(-1); - assertThat(sortByType(m4, m1)).isEqualTo(1); - assertThat(sortByType(m1, m4)).isEqualTo(-1); - assertThat(sortByType(m5, m2)).isEqualTo(1); - assertThat(sortByType(m2, m5)).isEqualTo(-1); + m6.put("type", "TREE"); + m6.put("name", "AA"); + assertThat(sortByTypeAlpha(m1, m2)).isEqualTo(-1); + assertThat(sortByTypeAlpha(m2, m3)).isEqualTo(-1); + assertThat(sortByTypeAlpha(m3, m4)).isEqualTo(-1); + assertThat(sortByTypeAlpha(m4, m1)).isEqualTo(1); + assertThat(sortByTypeAlpha(m1, m4)).isEqualTo(-1); + assertThat(sortByTypeAlpha(m5, m2)).isEqualTo(1); + assertThat(sortByTypeAlpha(m2, m5)).isEqualTo(-1); + assertThat(sortByTypeAlpha(m1, m6)).isEqualTo(0); + assertThat(sortByTypeAlpha(m2, m1)).isEqualTo(1); + } + + @Test + public void sortByShortestPathFirst() throws Exception { + Map<String, String> p1 = new HashMap<>(); + Map<String, String> p2 = new HashMap<>(); + Map<String, String> p3 = new HashMap<>(); + p1.put("type", "TREE"); + p1.put("name", "short/"); + p2.put("type", "TREE"); + p2.put("name", "shortpath/"); + p3.put("type", "TREE"); + p3.put("name", "short.path/"); + assertThat(sortByTypeAlpha(p1, p2)).isLessThan(0); + assertThat(sortByTypeAlpha(p1, p3)).isLessThan(0); } }
diff --git a/tools/BUILD b/tools/BUILD index 5cfe48c..ec76f1b 100644 --- a/tools/BUILD +++ b/tools/BUILD
@@ -1,14 +1,13 @@ load( "@bazel_tools//tools/jdk:default_java_toolchain.bzl", - "JDK9_JVM_OPTS", "default_java_toolchain", ) load("@rules_java//java:defs.bzl", "java_package_configuration") default_java_toolchain( - name = "error_prone_warnings_toolchain", - bootclasspath = ["@bazel_tools//tools/jdk:platformclasspath.jar"], - jvm_opts = JDK9_JVM_OPTS, + name = "error_prone_warnings_toolchain_java11", + source_version = "11", + target_version = "11", package_configuration = [ ":error_prone", ],