Merge changes Id3c53130,Iea5339da * changes: gitiles-dev: inject source path through a System property. gitiles-dev: use nio.Path rather than io.File for sourceRoot.
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/DefaultAccess.java b/gitiles-servlet/src/main/java/com/google/gitiles/DefaultAccess.java index 6fc3211..0e435c6 100644 --- a/gitiles-servlet/src/main/java/com/google/gitiles/DefaultAccess.java +++ b/gitiles-servlet/src/main/java/com/google/gitiles/DefaultAccess.java
@@ -161,6 +161,9 @@ private String getRelativePath(String path) { String base = basePath.getPath(); + if (path.equals(base)) { + return ""; + } if (path.startsWith(base)) { return path.substring(base.length() + 1); }
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java index bcc09eb..ae6219f 100644 --- a/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java +++ b/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java
@@ -256,11 +256,16 @@ } walk.setRewriteParents(false); String path = view.getPathPart(); - if (isTrue(Iterables.getFirst(view.getParameters().get(FOLLOW_PARAM), null))) { + + List<String> followParams = view.getParameters().get(FOLLOW_PARAM); + boolean follow = !followParams.isEmpty() + ? isTrue(followParams.get(0)) + : access.getConfig().getBoolean("log", null, "follow", true); + if (follow) { walk.setTreeFilter(FollowFilter.create(path, access.getConfig().get(DiffConfig.KEY))); } else { walk.setTreeFilter(AndTreeFilter.create( - PathFilterGroup.createFromStrings(view.getPathPart()), + PathFilterGroup.createFromStrings(path), TreeFilter.ANY_DIFF)); } }
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/blame/BlameServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/blame/BlameServlet.java index 7f18de2..9c5edbd 100644 --- a/gitiles-servlet/src/main/java/com/google/gitiles/blame/BlameServlet.java +++ b/gitiles-servlet/src/main/java/com/google/gitiles/blame/BlameServlet.java
@@ -219,10 +219,17 @@ } Map<String, Object> e = Maps.newHashMapWithExpectedSize(6); e.put("abbrevSha", abbrevSha); + String blameParent = ""; + String blameText = "blame"; + if (view.getRevision().getName().equals(r.getSourceCommit().name())) { + blameParent = "^"; + blameText = "blame^"; + } e.put("blameUrl", GitilesView.blame().copyFrom(view) - .setRevision(r.getSourceCommit().name()) + .setRevision(r.getSourceCommit().name() + blameParent) .setPathPart(r.getSourcePath()) .toUrl()); + e.put("blameText", blameText); e.put("commitUrl", GitilesView.revision().copyFrom(view) .setRevision(r.getSourceCommit().name()) .toUrl());
diff --git a/gitiles-servlet/src/main/resources/com/google/gitiles/templates/BlameDetail.soy b/gitiles-servlet/src/main/resources/com/google/gitiles/templates/BlameDetail.soy index a35b6e2..f5110d8 100644 --- a/gitiles-servlet/src/main/resources/com/google/gitiles/templates/BlameDetail.soy +++ b/gitiles-servlet/src/main/resources/com/google/gitiles/templates/BlameDetail.soy
@@ -55,7 +55,7 @@ <td class="Blame-time">{$region.author.time}</span> <td class="Blame-regionLink"> [<a href="{$region.diffUrl}">{msg desc="text for diff URL"}diff{/msg}</a>] - [<a href="{$region.blameUrl}">{msg desc="text for blame URL"}blame{/msg}</a>] + [<a href="{$region.blameUrl}">{msg desc="text for blame URL"}{$region.blameText}{/msg}</a>] </td> {else} <td colspan="4"></td>
diff --git a/gitiles-servlet/src/test/java/com/google/gitiles/LogServletTest.java b/gitiles-servlet/src/test/java/com/google/gitiles/LogServletTest.java index 56f1c29..2eadf54 100644 --- a/gitiles-servlet/src/test/java/com/google/gitiles/LogServletTest.java +++ b/gitiles-servlet/src/test/java/com/google/gitiles/LogServletTest.java
@@ -83,11 +83,11 @@ repo.getRevWalk().parseBody(c1); repo.getRevWalk().parseBody(c2); - Log response = buildJson(LOG, "/repo/+log/master/bar"); + Log response = buildJson(LOG, "/repo/+log/master/bar", "follow=0"); assertThat(response.log).hasSize(1); verifyJsonCommit(response.log.get(0), c2); - response = buildJson(LOG, "/repo/+log/master/bar", "follow=1"); + response = buildJson(LOG, "/repo/+log/master/bar"); assertThat(response.log).hasSize(2); verifyJsonCommit(response.log.get(0), c2); verifyJsonCommit(response.log.get(1), c1);
diff --git a/gitiles-servlet/src/test/java/com/google/gitiles/ServletTest.java b/gitiles-servlet/src/test/java/com/google/gitiles/ServletTest.java index 8f6224a..01de750 100644 --- a/gitiles-servlet/src/test/java/com/google/gitiles/ServletTest.java +++ b/gitiles-servlet/src/test/java/com/google/gitiles/ServletTest.java
@@ -19,6 +19,7 @@ import static javax.servlet.http.HttpServletResponse.SC_NOT_FOUND; import static javax.servlet.http.HttpServletResponse.SC_OK; +import com.google.common.base.Optional; import com.google.common.base.Strings; import com.google.common.net.HttpHeaders; import com.google.gson.FieldNamingPolicy; @@ -29,10 +30,16 @@ import org.eclipse.jgit.internal.storage.dfs.DfsRepository; import org.eclipse.jgit.internal.storage.dfs.DfsRepositoryDescription; import org.eclipse.jgit.internal.storage.dfs.InMemoryRepository; +import org.eclipse.jgit.junit.MockSystemReader; import org.eclipse.jgit.junit.TestRepository; +import org.eclipse.jgit.lib.PersonIdent; +import org.eclipse.jgit.revwalk.RevWalk; +import org.eclipse.jgit.util.SystemReader; +import org.junit.After; import org.junit.Before; import java.util.Map; +import java.util.TimeZone; /** Base class for servlet tests. */ public class ServletTest { @@ -41,11 +48,18 @@ @Before public void setUp() throws Exception { - repo = new TestRepository<DfsRepository>( - new InMemoryRepository(new DfsRepositoryDescription("repo"))); + MockSystemReader mockSystemReader = new MockSystemReader(); + SystemReader.setInstance(mockSystemReader); + DfsRepository r = new InMemoryRepository(new DfsRepositoryDescription("repo")); + repo = new TestRepository<>(r, new RevWalk(r), mockSystemReader); servlet = TestGitilesServlet.create(repo); } + @After + public void tearDown() { + SystemReader.setInstance(null); + } + protected FakeHttpServletResponse buildResponse( String path, String queryString, int expectedStatus) throws Exception { @@ -128,6 +142,11 @@ .create(); } + protected String currentTimeFormatted() { + PersonIdent p = new PersonIdent(repo.getRepository()); + return new DateFormatter(Optional.<TimeZone>absent(), DateFormatter.Format.ISO).format(p); + } + protected void assertNotFound(String path, String queryString) throws Exception { buildResponse(path, queryString, SC_NOT_FOUND); }
diff --git a/gitiles-servlet/src/test/java/com/google/gitiles/TimeCacheTest.java b/gitiles-servlet/src/test/java/com/google/gitiles/TimeCacheTest.java index bc4e553..7100359 100644 --- a/gitiles-servlet/src/test/java/com/google/gitiles/TimeCacheTest.java +++ b/gitiles-servlet/src/test/java/com/google/gitiles/TimeCacheTest.java
@@ -55,7 +55,7 @@ new InMemoryRepository(new DfsRepositoryDescription("test"))); walk = new RevWalk(repo.getRepository()); cache = new TimeCache(); - start = repo.getClock().getTime() / 1000; + start = repo.getDate().getTime() / 1000; } private long getTime(ObjectId id) throws IOException {
diff --git a/gitiles-servlet/src/test/java/com/google/gitiles/blame/BlameServletTest.java b/gitiles-servlet/src/test/java/com/google/gitiles/blame/BlameServletTest.java index 03a962f..f4fb859 100644 --- a/gitiles-servlet/src/test/java/com/google/gitiles/blame/BlameServletTest.java +++ b/gitiles-servlet/src/test/java/com/google/gitiles/blame/BlameServletTest.java
@@ -31,6 +31,8 @@ @RunWith(JUnit4.class) public class BlameServletTest extends ServletTest { + private static final String NAME = "J. Author"; + private static final String EMAIL = "[email protected]"; private static class RegionJsonData { int start; int count; @@ -44,7 +46,10 @@ String contents1 = "foo\n"; String contents2 = "foo\ncontents\n"; RevCommit c1 = repo.update("master", repo.commit().add("foo", contents1)); - RevCommit c2 = repo.update("master", repo.commit().tick(10).parent(c1).add("foo", contents2)); + String c1Time = currentTimeFormatted(); + RevCommit c2 = repo.update("master", + repo.commit().tick(10).parent(c1).add("foo", contents2)); + String c2Time = currentTimeFormatted(); Map<String, List<RegionJsonData>> result = getBlameJson("/repo/+blame/" + c2.name() + "/foo"); assertThat(Iterables.getOnlyElement(result.keySet())).isEqualTo("regions"); @@ -56,18 +61,18 @@ assertThat(r1.count).isEqualTo(1); assertThat(r1.path).isEqualTo("foo"); assertThat(r1.commit).isEqualTo(c1.name()); - assertThat(r1.author.name).isEqualTo("J. Author"); - assertThat(r1.author.email).isEqualTo("[email protected]"); - assertThat(r1.author.time).isEqualTo("2009-03-13 17:29:48 -0330"); + assertThat(r1.author.name).isEqualTo(NAME); + assertThat(r1.author.email).isEqualTo(EMAIL); + assertThat(r1.author.time).isEqualTo(c1Time); RegionJsonData r2 = regions.get(1); assertThat(r2.start).isEqualTo(2); assertThat(r2.count).isEqualTo(1); assertThat(r2.path).isEqualTo("foo"); assertThat(r2.commit).isEqualTo(c2.name()); - assertThat(r2.author.name).isEqualTo("J. Author"); - assertThat(r2.author.email).isEqualTo("[email protected]"); - assertThat(r2.author.time).isEqualTo("2009-03-13 17:29:58 -0330"); + assertThat(r2.author.name).isEqualTo(NAME); + assertThat(r2.author.email).isEqualTo(EMAIL); + assertThat(r2.author.time).isEqualTo(c2Time); } private Map<String, List<RegionJsonData>> getBlameJson(String path) throws Exception {
diff --git a/lib/jgit/BUCK b/lib/jgit/BUCK index bced6fb..8da5493 100644 --- a/lib/jgit/BUCK +++ b/lib/jgit/BUCK
@@ -1,10 +1,10 @@ -REPO = MAVEN_CENTRAL -VERS = '4.0.1.201506240215-r' +REPO = GERRIT # Leave here even if set to MAVEN_CENTRAL. +VERS = '4.2.0.201601211800-r.136-g8efdaaf' maven_jar( name = 'jgit', id = 'org.eclipse.jgit:org.eclipse.jgit:' + VERS, - sha1 = '3bdf2d666df1a5373f7ad291c075ab1329560afd', + sha1 = '32f50e3c0c4f53d8fdca147d3ff0b6ef0dc02eb0', repository = REPO, unsign = True, deps = [':ewah'], @@ -18,7 +18,7 @@ maven_jar( name = 'jgit-servlet', id = 'org.eclipse.jgit:org.eclipse.jgit.http.server:' + VERS, - sha1 = '8c73719477224802eda2a2da65bce8946d0fac6f', + sha1 = 'b493401b9778cdc38f7c08f111c6385a434b2ac2', repository = REPO, deps = [':jgit'], unsign = True, @@ -41,7 +41,7 @@ maven_jar( name = 'jgit-archive_library', id = 'org.eclipse.jgit:org.eclipse.jgit.archive:' + VERS, - sha1 = '124e353f51adbbc1af12b143012cc1ebfa2c1012', + sha1 = '1b3a0cb7b8c2629e33902b3daf1067accca62eaf', repository = REPO, deps = [':jgit'], unsign = True, @@ -54,7 +54,7 @@ maven_jar( name = 'junit', id = 'org.eclipse.jgit:org.eclipse.jgit.junit:' + VERS, - sha1 = 'bddb62b8f532b6d46ac832d909fa46b73c40a126', + sha1 = 'c68ddb3e2aaca05b1d2f8250dd107b5f484ed603', repository = REPO, unsign = True, deps = [':jgit'],