Add "pretty" log variants for more flexible log formatting.
Variant views are triggered by passing the 'pretty=FORMAT' URL param, such
as 'pretty=full' or 'pretty=oneline'.
Additional variants or overrides can be declared in gitiles.config with:
[logFormat "oneline"]
variant = myOnelineVariantOverride
[logFormat "special"]
variant = myCompletelyCustomVariant
Change-Id: If30554995062110bfbf22ee8760db8303d50b69c
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 4d1da1c..ff1fb7b 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java
@@ -18,6 +18,7 @@
import static javax.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR;
import static javax.servlet.http.HttpServletResponse.SC_NOT_FOUND;
+import com.google.common.base.Objects;
import com.google.common.base.Optional;
import com.google.common.base.Strings;
import com.google.common.collect.Iterables;
@@ -33,6 +34,7 @@
import org.eclipse.jgit.errors.RevWalkException;
import org.eclipse.jgit.http.server.ServletUtils;
import org.eclipse.jgit.lib.AbbreviatedObjectId;
+import org.eclipse.jgit.lib.Config;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.ObjectReader;
@@ -63,6 +65,7 @@
static final String LIMIT_PARAM = "n";
static final String START_PARAM = "s";
+ private static final String PRETTY_PARAM = "pretty";
private static final int DEFAULT_LIMIT = 100;
private static final int MAX_LIMIT = 10000;
@@ -85,8 +88,16 @@
try {
GitilesAccess access = getAccess(req);
+ Config config = access.getConfig();
DateFormatter df = new DateFormatter(access, Format.DEFAULT);
- Map<String, Object> data = new LogSoyData(req, view).toSoyData(paginator, null, df);
+
+ // Allow the user to select a logView variant with the "pretty" param.
+ String pretty = Iterables.getFirst(view.getParameters().get(PRETTY_PARAM), "default");
+ Map<String, Object> data = new LogSoyData(req, view,
+ config.getBoolean("logFormat", pretty, "verbose", false)).toSoyData(paginator, null, df);
+ String variant = config.getString("logFormat", pretty, "variant");
+ data.put("logEntryPretty", pretty);
+ data.put("logEntryVariant", Objects.firstNonNull(variant, pretty));
if (!view.getRevision().nameIsId()) {
List<Map<String, Object>> tags = Lists.newArrayListWithExpectedSize(1);
@@ -108,7 +119,6 @@
}
data.put("title", title);
- GitilesConfig.putVariant(access.getConfig(), "logEntry", "logEntryVariant", data);
renderHtml(req, res, "gitiles.logDetail", data);
} catch (RevWalkException e) {