Merge changes I0f844eaa,Ife1777c0 * changes: Fix dev server configuration Format source code using google-java-format 1.24.0
diff --git a/Documentation/developer-guide.md b/Documentation/developer-guide.md index d36a24d..0a96b3a 100644 --- a/Documentation/developer-guide.md +++ b/Documentation/developer-guide.md
@@ -67,8 +67,8 @@ ``` This will recompile and start a development server. Open -http://localhost:8080/ to view your local copy of gitiles, which -will serve any repositories under `/path/to/repositories`. +http://localhost:8080/path/to/repositories to view your local copy of gitiles, +which will serve any repositories under `/path/to/repositories`. Passing `--debug` option to `tools/run_dev.sh` will suspend the runtime until a remote debugger connects to port 5005. If you don't want to suspend the
diff --git a/java/com/google/gitiles/LogServlet.java b/java/com/google/gitiles/LogServlet.java index 71f7384..368fd0b 100644 --- a/java/com/google/gitiles/LogServlet.java +++ b/java/com/google/gitiles/LogServlet.java
@@ -191,10 +191,14 @@ if (headRef == null) { return null; } + ObjectId id = headRef.getObjectId(); + if (id == null) { + return null; + } try (RevWalk walk = new RevWalk(repo)) { return GitilesView.log() .copyFrom(view) - .setRevision(Revision.peel(Constants.HEAD, walk.parseAny(headRef.getObjectId()), walk)) + .setRevision(Revision.peel(Constants.HEAD, walk.parseAny(id), walk)) .build(); } }
diff --git a/javatests/com/google/gitiles/LogServletTest.java b/javatests/com/google/gitiles/LogServletTest.java index 93bf80a..7d75849 100644 --- a/javatests/com/google/gitiles/LogServletTest.java +++ b/javatests/com/google/gitiles/LogServletTest.java
@@ -37,9 +37,9 @@ public class LogServletTest extends ServletTest { private static final TypeToken<Log> LOG = new TypeToken<Log>() {}; private static final String MAIN = "main"; - private static final String AUTHOR_METADATA_ELEMENT = "<th class=\"Metadata-title\">author</th>"; + private static final String AUTHOR_METADATA_ELEMENT = "<dt class=\"Metadata-title\">author</dt>"; private static final String COMMITTER_METADATA_ELEMENT = - "<th class=\"Metadata-title\">committer</th>"; + "<dt class=\"Metadata-title\">committer</dt>"; @Test public void basicLog() throws Exception {
diff --git a/resources/com/google/gitiles/static/base.css b/resources/com/google/gitiles/static/base.css index f4ef52a..7653f84 100644 --- a/resources/com/google/gitiles/static/base.css +++ b/resources/com/google/gitiles/static/base.css
@@ -374,11 +374,29 @@ .Metadata { margin-bottom: 15px; } +.Metadata-descriptionList { + display: grid; + grid-template-columns: max-content minmax(auto, max-content) auto; + gap: 2px 12px; +} +.Metadata-row { + grid-column: 1 / -1; + display: grid; + grid-template-columns: subgrid; +} .Metadata-title { + grid-column: 1; font-weight: bold; - padding-right: 10px; text-align: right; } +.Metadata-description { + grid-column: 2 / -1; + display: grid; + grid-template-columns: subgrid; +} +.Metadata-descriptionCell { + grid-column: auto; +} .MetadataMessage { background-color: #fafafa; border: 1px solid #ccc; @@ -485,6 +503,15 @@ color: #666; } +@media (max-width: 700px) { + .Metadata-descriptionList { + grid-template-columns: max-content auto; + } + .Metadata-descriptionCell { + grid-column: 2; + } +} + /* BlameDetail.soy */ .Blame {
diff --git a/resources/com/google/gitiles/templates/LogDetail.soy b/resources/com/google/gitiles/templates/LogDetail.soy index b82b2a4..05fc37c 100644 --- a/resources/com/google/gitiles/templates/LogDetail.soy +++ b/resources/com/google/gitiles/templates/LogDetail.soy
@@ -254,62 +254,63 @@ score: the similarity score of the rename or copy. */ <div class="u-monospace Metadata"> -<table> - <tr> - <th class="Metadata-title">{msg desc="Header for commit SHA entry"}commit{/msg}</th> - <td class="sha1"> - <a href="{$url}">{$sha}</a> - </td> - <td> - {if length($branches)} - {for $branch in $branches} - {sp}<a href="{$branch.url}" class="branch-label">{$branch.name}</a> - {/for} - {/if} - {if length($tags)} - {for $tag in $tags} - {sp}<a href="{$tag.url}" class="tag-label">{$tag.name}</a> - {/for} - {else} - {sp} - {/if} - </td> - </tr> - <tr> - <th class="Metadata-title">{msg desc="Header for commit author"}author{/msg}</th> - <td> - {call objDetail.person_ data="$author" /} - </td> - <td>{$author.time}</td> - </tr> - <tr> - <th class="Metadata-title">{msg desc="Header for committer"}committer{/msg}</th> - <td> - {call objDetail.person_ data="$committer" /} - </td> - <td>{$committer.time}</td> - </tr> - {if $rename} - <tr> - <td colspan="3"> - <span class="CommitLog-rename"> - [ - {switch $rename.changeType} - {case 'RENAME'} - Renamed - {case 'COPY'} - Copied - {/switch} - {if $rename.score != 100} - {sp}({$rename.score}%) - {/if} - {sp}from {$rename.oldPath}] - </span> - </td> - </tr> - {/if} - -</table> +<dl class="Metadata-descriptionList"> + <div class="Metadata-row"> + <dt class="Metadata-title">{msg desc="Header for commit SHA entry"}commit{/msg}</dt> + <dd class="Metadata-description"> + <div class="sha1 Metadata-descriptionCell"> + <a href="{$url}">{$sha}</a> + </div> + <div class="Metadata-descriptionCell"> + {if length($branches)} + {for $branch in $branches} + {sp}<a href="{$branch.url}" class="branch-label">{$branch.name}</a> + {/for} + {/if} + {if length($tags)} + {for $tag in $tags} + {sp}<a href="{$tag.url}" class="tag-label">{$tag.name}</a> + {/for} + {else} + {sp} + {/if} + </div> + </dd> + </div> + <div class="Metadata-row"> + <dt class="Metadata-title">{msg desc="Header for commit author"}author{/msg}</dt> + <dd class="Metadata-description"> + <div class="Metadata-descriptionCell"> + {call objDetail.person_ data="$author" /} + </div> + <div class="Metadata-descriptionCell">{$author.time}</div> + </dd> + </div> + <div class="Metadata-row"> + <dt class="Metadata-title">{msg desc="Header for committer"}committer{/msg}</dt> + <dd class="Metadata-description"> + <div class="Metadata-descriptionCell"> + {call objDetail.person_ data="$committer" /} + </div> + <div class="Metadata-descriptionCell">{$committer.time}</div> + </dd> + </div> +</dl> +{if $rename} + <span class="CommitLog-rename"> + [ + {switch $rename.changeType} + {case 'RENAME'} + Renamed + {case 'COPY'} + Copied + {/switch} + {if $rename.score != 100} + {sp}({$rename.score}%) + {/if} + {sp}from {$rename.oldPath}] + </span> +{/if} </div> <pre class="u-pre u-monospace MetadataMessage"> {$message}
diff --git a/resources/com/google/gitiles/templates/ObjectDetail.soy b/resources/com/google/gitiles/templates/ObjectDetail.soy index f7c0b0c..4fc83d8 100644 --- a/resources/com/google/gitiles/templates/ObjectDetail.soy +++ b/resources/com/google/gitiles/templates/ObjectDetail.soy
@@ -44,52 +44,68 @@ {@param archiveUrl: ?} /** URL to a download link of this commit as an archive. */ {@param archiveType: ?} /** type of the archive to download. */ <div class="u-monospace Metadata"> - <table> - <tr> - <th class="Metadata-title">{msg desc="Header for commit SHA entry"}commit{/msg}</th> - <td> - {$sha} - </td> - <td> - <span> - [<a href="{$logUrl}">{msg desc="text for the log link"}log{/msg}</a>] - </span> - {sp}<span>[<a href="{$archiveUrl}">{$archiveType}</a>]</span> - </td> - </tr> - <tr> - <th class="Metadata-title">{msg desc="Header for commit author"}author{/msg}</th> - <td> - {call person_ data="$author" /} - </td> - <td>{$author.time}</td> - </tr> - <tr> - <th class="Metadata-title">{msg desc="Header for committer"}committer{/msg}</th> - <td> - {call person_ data="$committer" /} - </td> - <td>{$committer.time}</td> - </tr> - <tr> - <th class="Metadata-title">{msg desc="Header for tree SHA entry"}tree{/msg}</th> - <td><a href="{$treeUrl}">{$tree}</a></td> - </tr> - {for $parent in $parents} - <tr> - <th class="Metadata-title">{msg desc="Header for parent SHA"}parent{/msg}</th> - <td> - <a href="{$parent.url}">{$parent.sha}</a> - {sp}<span> - [<a href="{$parent.diffUrl}">{msg desc="text for the parent diff link"}diff{/msg}</a>] - {if $parent.blameUrl != null} - {sp}[<a href="{$parent.blameUrl}">{msg desc="text for the parent blame link"}blame{/msg}</a>] - {/if} + <dl class="Metadata-descriptionList"> + <div class="Metadata-row"> + <dt class="Metadata-title">{msg desc="Header for commit SHA entry"}commit{/msg}</dt> + <dd class="Metadata-description"> + <div class="Metadata-descriptionCell"> + {$sha} + </div> + <div class="Metadata-descriptionCell"> + <span> + [<a href="{$logUrl}">{msg desc="text for the log link"}log{/msg}</a>] </span> - </td> - </tr> + {sp}<span>[<a href="{$archiveUrl}">{$archiveType}</a>]</span> + </div> + </dd> + </div> + <div class="Metadata-row"> + <dt class="Metadata-title">{msg desc="Header for commit author"}author{/msg}</dt> + <dd class="Metadata-description"> + <div class="Metadata-descriptionCell"> + {call person_ data="$author" /} + </div> + <div class="Metadata-descriptionCell"> + {$author.time} + </div> + </dd> + </div> + <div class="Metadata-row"> + <dt class="Metadata-title">{msg desc="Header for committer"}committer{/msg}</dt> + <dd class="Metadata-description"> + <div class="Metadata-descriptionCell"> + {call person_ data="$committer" /} + </div> + <div class="Metadata-descriptionCell"> + {$committer.time} + </div> + </dd> + </div> + <div class="Metadata-row"> + <dt class="Metadata-title">{msg desc="Header for tree SHA entry"}tree{/msg}</dt> + <dd class="Metadata-description"> + <div class="Metadata-descriptionCell"> + <a href="{$treeUrl}">{$tree}</a> + </div> + </dd> + </div> + {for $parent in $parents} + <div class="Metadata-row"> + <dt class="Metadata-title">{msg desc="Header for parent SHA"}parent{/msg}</dt> + <dd class="Metadata-description"> + <div class="Metadata-descriptionCell"> + <a href="{$parent.url}">{$parent.sha}</a> + {sp}<span> + [<a href="{$parent.diffUrl}">{msg desc="text for the parent diff link"}diff{/msg}</a>] + {if $parent.blameUrl != null} + {sp}[<a href="{$parent.blameUrl}">{msg desc="text for the parent blame link"}blame{/msg}</a>] + {/if} + </span> + </div> + </dd> + </div> {/for} - </table> + </dl> </div> {call message_} {param className: 'u-pre u-monospace MetadataMessage' /} @@ -313,27 +329,33 @@ {@param object: ?} /** SHA of the object this tag points to. */ {@param message: ?} /** tag message. */ <div class="u-monospace Metadata"> - <table> - <tr> - <th class="Metadata-title">{msg desc="Header for tag SHA entry"}tag{/msg}</th> - <td class="sha">{$sha}</td> - <td>{sp}</td> - </tr> + <dl class="Metadata-descriptionList"> + <div class="Metadata-row"> + <dt class="Metadata-title">{msg desc="Header for tag SHA entry"}tag{/msg}</dt> + <dd class="Metadata-description"> + <div class="sha Metadata-descriptionCell">{$sha}</div> + <div class="Metadata-descriptionCell">{sp}</div> + </dd> + </div> {if $tagger} - <tr> - <th class="Metadata-title">{msg desc="Header for tagger"}tagger{/msg}</th> - <td> - {call person_ data="$tagger" /} - </td> - <td>{$tagger.time}</td> - </tr> + <div class="Metadata-row"> + <dt class="Metadata-title">{msg desc="Header for tagger"}tagger{/msg}</dt> + <dd class="Metadata-description"> + <div class="Metadata-descriptionCell"> + {call person_ data="$tagger" /} + </div> + <div class="Metadata-descriptionCell">{$tagger.time}</div> + </dd> + </div> {/if} - <tr> - <th class="Metadata-title">{msg desc="Header for tagged object SHA"}object{/msg}</th> - <td class="sha">{$object}</td> - <td>{sp}</td> - </tr> - </table> + <div class="Metadata-row"> + <dt class="Metadata-title">{msg desc="Header for tagged object SHA"}object{/msg}</dt> + <dd class="Metadata-description"> + <div class="sha Metadata-descriptionCell">{$object}</div> + <div class="Metadata-descriptionCell">{sp}</div> + </dd> + </div> + </dl> </div> {if $message && length($message)} {call message_}