Merge changes from topics "jgit-reachability", "reachability-2" * changes: VisibilityChecker: Remove topoSort argument VisibilityCache: Use jgit's ReachabilityChecker
diff --git a/WORKSPACE b/WORKSPACE index 9b003bc..afff638 100644 --- a/WORKSPACE +++ b/WORKSPACE
@@ -164,7 +164,7 @@ sha1 = "198ea005f41219f038f4291f0b0e9f3259730e92", ) -JGIT_VERS = "5.4.3.201909031940-r" +JGIT_VERS = "5.5.1.201910021850-r" JGIT_REPO = MAVEN_CENTRAL @@ -172,28 +172,28 @@ name = "jgit-lib", artifact = "org.eclipse.jgit:org.eclipse.jgit:" + JGIT_VERS, repository = JGIT_REPO, - sha1 = "10322c4e103485f8b4873cbbf982342f9c3d7989", + sha1 = "e0ba7a468e8c62da8521ca3a06a061d4dde95223", ) maven_jar( name = "jgit-servlet", artifact = "org.eclipse.jgit:org.eclipse.jgit.http.server:" + JGIT_VERS, repository = JGIT_REPO, - sha1 = "59d0c943343f30612e4e2a5a3bf1b95b56e00207", + sha1 = "dde1857a91504fadda0af4bb8958d11cfb14dcfe", ) maven_jar( name = "jgit-junit", artifact = "org.eclipse.jgit:org.eclipse.jgit.junit:" + JGIT_VERS, repository = JGIT_REPO, - sha1 = "71659fc1a1729b7c67846dac8cd6a762fa72002a", + sha1 = "894f85c1615d1b47def1018bd98ca65dcaf5a8d5", ) maven_jar( name = "jgit-archive", artifact = "org.eclipse.jgit:org.eclipse.jgit.archive:" + JGIT_VERS, repository = JGIT_REPO, - sha1 = "21dc4a10882dc667c83bf82a563a6fc4d7719456", + sha1 = "1dd6de0d52ad3055cee6ba9b34764b08d85a5238", ) maven_jar(
diff --git a/java/com/google/gitiles/LogServlet.java b/java/com/google/gitiles/LogServlet.java index 4d038ae..c738f0e 100644 --- a/java/com/google/gitiles/LogServlet.java +++ b/java/com/google/gitiles/LogServlet.java
@@ -71,6 +71,9 @@ private static final String FOLLOW_PARAM = "follow"; private static final String NAME_STATUS_PARAM = "name-status"; private static final String PRETTY_PARAM = "pretty"; + private static final String TOPO_ORDER_PARAM = "topo-order"; + private static final String REVERSE_PARAM = "reverse"; + private static final String FIRST_PARENT_PARAM = "first-parent"; private static final int DEFAULT_LIMIT = 100; private static final int MAX_LIMIT = 10000; @@ -223,6 +226,15 @@ private static RevWalk newWalk(Repository repo, GitilesView view, GitilesAccess access) throws MissingObjectException, IOException { RevWalk walk = new RevWalk(repo); + if (isTrue(view, FIRST_PARENT_PARAM)) { + walk.setFirstParent(true); + } + if (isTrue(view, TOPO_ORDER_PARAM)) { + walk.sort(RevSort.TOPO, true); + } + if (isTrue(view, REVERSE_PARAM)) { + walk.sort(RevSort.REVERSE, true); + } try { walk.markStart(walk.parseCommit(view.getRevision().getId())); if (!Revision.isNull(view.getOldRevision())) { @@ -233,12 +245,6 @@ } setTreeFilter(walk, view, access); setRevFilter(walk, view); - if (isTrue(view, "topo-order")) { - walk.sort(RevSort.TOPO, true); - } - if (isTrue(view, "reverse")) { - walk.sort(RevSort.REVERSE, true); - } return walk; }
diff --git a/javatests/com/google/gitiles/LogServletTest.java b/javatests/com/google/gitiles/LogServletTest.java index 06ddaf4..7232439 100644 --- a/javatests/com/google/gitiles/LogServletTest.java +++ b/javatests/com/google/gitiles/LogServletTest.java
@@ -67,6 +67,19 @@ } @Test + public void firstParentLog() throws Exception { + RevCommit p1 = repo.update("master", repo.commit().add("foo", "foo\n")); + RevCommit p2 = repo.update("master", repo.commit().add("foo", "foo2\n")); + RevCommit c = repo.update("master", repo.commit().parent(p1).parent(p2).add("foo", "foo3\n")); + + Log response = buildJson(LOG, "/repo/+log/master", "first-parent"); + assertThat(response.log).hasSize(2); + + verifyJsonCommit(response.log.get(0), c); + verifyJsonCommit(response.log.get(1), p1); + } + + @Test public void follow() throws Exception { String contents = "contents"; RevCommit c1 = repo.branch("master").commit().add("foo", contents).create();