hgtemplates: synchronize templates with Mercurial 3.9; r?smacleod
The 3.9 release made a bunch of changes to JSON templates and
the HTML annotate viewer. We synchronize those with upstream.
Surprisingly, only a single test was impacted by this.
MozReview-Commit-ID: Kpn2BDmniYp
--- a/hgext/hgmo/tests/test-json-filelog.t
+++ b/hgext/hgmo/tests/test-json-filelog.t
@@ -35,52 +35,72 @@ Single file with 3 commits
> entry['pushdate'] = [n, 0]
> n += 1
> print json.dumps(data, indent = 4, sort_keys = True)
> EOF
$ python rmpd
{
"entries": [
{
- "author": "test",
+ "bookmarks": [],
+ "branch": "default",
"date": [
0.0,
0
],
"desc": "NO BUG",
"node": "313d9c157189179b5853d16831f80aa5ab609782",
+ "parents": [
+ "ca92ee64ee5df95ce203c3a1ba6c72a6328963d1"
+ ],
+ "phase": "public",
"pushdate": [
0.0,
0
],
- "pushid": 3
+ "pushid": 3,
+ "tags": [
+ "tip"
+ ],
+ "user": "test"
},
{
- "author": "test",
+ "bookmarks": [],
+ "branch": "default",
"date": [
0.0,
0
],
"desc": "Bug 159 - Do foo; r=calixte\n\nThis is related to bug 265.",
"node": "ca92ee64ee5df95ce203c3a1ba6c72a6328963d1",
+ "parents": [
+ "4de9924f06f2d653b28fda17113787fcfffb03e0"
+ ],
+ "phase": "public",
"pushdate": [
1.0,
0
],
- "pushid": 2
+ "pushid": 2,
+ "tags": [],
+ "user": "test"
},
{
- "author": "test",
+ "bookmarks": [],
+ "branch": "default",
"date": [
0.0,
0
],
"desc": "Bug 314; r=calixte",
"node": "4de9924f06f2d653b28fda17113787fcfffb03e0",
+ "parents": [],
+ "phase": "public",
"pushdate": [
2.0,
0
],
- "pushid": 1
+ "pushid": 1,
+ "tags": [],
+ "user": "test"
}
- ],
- "file": "foo"
+ ]
}
--- a/hgtemplates/atom/branchentry.tmpl
+++ b/hgtemplates/atom/branchentry.tmpl
@@ -1,8 +1,8 @@
<entry>
<title>{branch|escape}</title>
<link rel="alternate" href="{urlbase}{url|urlescape}rev/{node|short}"/>
<id>{urlbase}{url|urlescape}#branch-{node}</id>
<updated>{date|rfc3339date}</updated>
<published>{date|rfc3339date}</published>
- <content type="text"><![CDATA[{branch|strip|escape|addbreaks}]]></content>
+ <content type="text">{branch|strip|escape|addbreaks}</content>
</entry>
--- a/hgtemplates/atom/changelogentry.tmpl
+++ b/hgtemplates/atom/changelogentry.tmpl
@@ -4,40 +4,40 @@
<link href="{urlbase}{url|urlescape}rev/{node|short}"/>
<author>
<name>{author|person|escape}</name>
<email>{author|email|obfuscate}</email>
</author>
<updated>{date|rfc3339date}</updated>
<published>{date|rfc3339date}</published>
<content type="xhtml">
- <table xmlns="http://www.w3.org/1999/xhtml">
- <tr>
- <th style="text-align:left;">changeset</th>
- <td>{node|short}</td>
- </tr>
- <tr>
- <th style="text-align:left;">branch</th>
- <td>{inbranch%"{name|escape}"}{branches%"{name|escape}"}</td>
- </tr>
- <tr>
- <th style="text-align:left;">bookmark</th>
- <td>{bookmarks%"{name|escape}"}</td>
- </tr>
- <tr>
- <th style="text-align:left;">tag</th>
- <td>{tags%"{name|escape}"}</td>
- </tr>
- <tr>
- <th style="text-align:left;">user</th>
- <td>{author|obfuscate}</td>
- </tr>
- <tr>
- <th style="text-align:left;vertical-align:top;">description</th>
- <td>{desc|strip|escape|websub|addbreaks|nonempty}</td>
- </tr>
- <tr>
- <th style="text-align:left;vertical-align:top;">files</th>
- <td>{files}</td>
- </tr>
- </table>
+ <table xmlns="http://www.w3.org/1999/xhtml">
+ <tr>
+ <th style="text-align:left;">changeset</th>
+ <td>{node|short}</td>
+ </tr>
+ <tr>
+ <th style="text-align:left;">branch</th>
+ <td>{inbranch%"{name|escape}"}{branches%"{name|escape}"}</td>
+ </tr>
+ <tr>
+ <th style="text-align:left;">bookmark</th>
+ <td>{bookmarks%"{name|escape}"}</td>
+ </tr>
+ <tr>
+ <th style="text-align:left;">tag</th>
+ <td>{tags%"{name|escape}"}</td>
+ </tr>
+ <tr>
+ <th style="text-align:left;">user</th>
+ <td>{author|obfuscate}</td>
+ </tr>
+ <tr>
+ <th style="text-align:left;vertical-align:top;">description</th>
+ <td>{desc|strip|escape|websub|addbreaks|nonempty}</td>
+ </tr>
+ <tr>
+ <th style="text-align:left;vertical-align:top;">files</th>
+ <td>{files}</td>
+ </tr>
+ </table>
</content>
</entry>
--- a/hgtemplates/atom/map
+++ b/hgtemplates/atom/map
@@ -1,16 +1,15 @@
default = 'changelog'
feedupdated = '<updated>{date|rfc3339date}</updated>'
mimetype = 'application/atom+xml; charset={encoding}'
header = header.tmpl
changelog = changelog.tmpl
changelogentry = changelogentry.tmpl
filelog = filelog.tmpl
-filelogentry = filelogentry.tmpl
pushlog = pushlog.tmpl
pushlogentry = pushlogentry.tmpl
pushlogfile = '<li class="file">{name}</li>'
tags = tags.tmpl
tagentry = tagentry.tmpl
bookmarks = bookmarks.tmpl
bookmarkentry = bookmarkentry.tmpl
branches = branches.tmpl
--- a/hgtemplates/gitweb/map
+++ b/hgtemplates/gitweb/map
@@ -90,24 +90,39 @@ fileentry = '
filerevision = filerevision.tmpl
fileannotate = fileannotate.tmpl
filediff = filediff.tmpl
filecomparison = filecomparison.tmpl
filelog = filelog.tmpl
fileline = '
<a href="#{lineid}"></a><span id="{lineid}">{strip(line|escape, '\r\n')}</span>'
annotateline = '
- <tr id="{lineid}" style="font-family:monospace" class="parity{parity}">
- <td class="linenr" style="text-align: right;">
- <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}"
- title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
+ <tr id="{lineid}" style="font-family:monospace" class="parity{parity}{ifeq(node, originalnode, ' thisrev')}">
+ <td class="annotate linenr parity{blockparity}" style="text-align: right;">
+ {if(blockhead,
+ '<a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}">
+ {rev}
+ </a>')}
+ <div class="annotate-info">
+ <div>
+ <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}">
+ {node|short}</a>
+ {desc|escape|firstline}
+ </div>
+ <div><em>{author|obfuscate}</em></div>
+ <div>parents: {parents%annotateparent}</div>
+ <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a>
+ <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
+ </div>
</td>
<td><pre><a class="linenr" href="#{lineid}">{linenumber}</a></pre></td>
<td><pre>{line|escape}</pre></td>
</tr>'
+annotateparent = '
+ <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rev}</a>'
difflineplus = '
<a href="#{lineid}"></a><span id="{lineid}" class="difflineplus">{strip(line|escape, '\r\n')}</span>'
difflineminus = '
<a href="#{lineid}"></a><span id="{lineid}" class="difflineminus">{strip(line|escape, '\r\n')}</span>'
difflineat = '
<a href="#{lineid}"></a><span id="{lineid}" class="difflineat">{strip(line|escape, '\r\n')}</span>'
diffline = '
<a href="#{lineid}"></a><span id="{lineid}">{strip(line|escape, '\r\n')}</span>'
--- a/hgtemplates/gitweb_mozilla/map
+++ b/hgtemplates/gitweb_mozilla/map
@@ -91,24 +91,39 @@ fileentry = '
filerevision = filerevision.tmpl
fileannotate = fileannotate.tmpl
filediff = filediff.tmpl
filecomparison = filecomparison.tmpl
filelog = filelog.tmpl
fileline = '
<a href="#{lineid}"></a><span id="{lineid}">{strip(line|escape, '\r\n')}</span>'
annotateline = '
- <tr id="{lineid}" style="font-family:monospace" class="parity{parity}">
- <td class="linenr" style="text-align: right;">
- <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}"
- title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
+ <tr id="{lineid}" style="font-family:monospace" class="parity{parity}{ifeq(node, originalnode, ' thisrev')}">
+ <td class="annotate parity{blockparity}" style="text-align: right;">
+ {if(blockhead,
+ '<a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}">
+ {rev}
+ </a>')}
+ <div class="annotate-info">
+ <div>
+ <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}">
+ {node|short}</a>
+ {desc|escape|firstline}
+ </div>
+ <div><em>{author|obfuscate}</em></div>
+ <div>parents: {parents%annotateparent}</div>
+ <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a>
+ <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
+ </div>
</td>
<td><pre><a class="linenr" href="#{lineid}">{linenumber}</a></pre></td>
<td><pre>{line|escape}</pre></td>
</tr>'
+annotateparent = '
+ <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rev}</a>'
difflineplus = '
<a href="#{lineid}"></a><span id="{lineid}" class="difflineplus">{strip(line|escape, '\r\n')}</span>'
difflineminus = '
<a href="#{lineid}"></a><span id="{lineid}" class="difflineminus">{strip(line|escape, '\r\n')}</span>'
difflineat = '
<a href="#{lineid}"></a><span id="{lineid}" class="difflineat">{strip(line|escape, '\r\n')}</span>'
diffline = '
<a href="#{lineid}"></a><span id="{lineid}">{strip(line|escape, '\r\n')}</span>'
--- a/hgtemplates/json/map
+++ b/hgtemplates/json/map
@@ -21,31 +21,54 @@ pushes2 = '\{
"lastpushid": {lastpushid|json},
"pushes": {pushes|json}
}'
headdivergence = '\{
"commitsbehind": {commitsbehind|json},
"filemerges": {filemerges|json},
"filemergesignored": {filemergesignored|json}
}'
-
-filerevision = '"not yet implemented"'
-search = '"not yet implemented"'
+filerevision = '\{
+ "node": {node|json},
+ "path": {file|json},
+ "date": {date|json},
+ "desc": {desc|utf8|json},
+ "branch": {if(branch, branch%changesetbranch, "default"|json)},
+ "bookmarks": [{join(bookmarks%changelistentryname, ", ")}],
+ "tags": [{join(tags%changelistentryname, ", ")}],
+ "user": {author|utf8|json},
+ "parents": [{join(parent%changesetparent, ", ")}],
+ "phase": {phase|json},
+ "lines": [{join(text%lineentry, ", ")}]
+ }'
+lineentry = '\{
+ "line": {line|json}
+ }'
+search = '\{
+ "node": {node|json},
+ "query": {query|json},
+ "entries": [{join(entries%searchentry, ", ")}]
+ }'
+searchentry = '{changelistentry}'
# changelog and shortlog are the same web API but with different
# number of entries.
changelog = changelist.tmpl
shortlog = changelist.tmpl
changelistentry = '\{
"node": {node|json},
"date": {date|json},
"desc": {desc|utf8|json},
+ "branch": {if(branch, branch%changesetbranch, "default"|json)},
"bookmarks": [{join(bookmarks%changelistentryname, ", ")}],
"tags": [{join(tags%changelistentryname, ", ")}],
"user": {author|utf8|json},
- "parents": [{join(allparents%changesetparent, ", ")}]
+ "phase": {phase|json},
+ "parents": [{if(allparents, join(allparents%changesetparent, ", "),
+ join(parent%changesetparent, ", "))}],
+ "pushid": {pushid|json}
}'
changelistentryname = '{name|utf8|json}'
changeset = '\{
"node": {node|json},
"date": {date|json},
"desc": {desc|utf8|json},
"backedoutby": {if(backedoutbynode, backedoutbynode|json, ""|json)},
"branch": {if(branch, branch%changesetbranch, "default"|json)},
@@ -105,17 +128,33 @@ branches = '\{
"branches": [{join(entries%branchentry, ", ")}]
}'
branchentry = '\{
"branch": {branch|utf8|json},
"node": {node|json},
"date": {date|json},
"status": {status|json}
}'
-summary = '"not yet implemented"'
+shortlogentry = '{changelistentry}'
+summary = '\{
+ "node": {node|json},
+ "lastchange": {lastchange|json},
+ "bookmarks": [{join(bookmarks%bookmarkentry, ", ")}],
+ "branches": [{join(branches%branchentry, ", ")}],
+ "shortlog": [{join(shortlog%shortlogentry, ", ")}],
+ "tags": [{join(tags%tagentry, ", ")}],
+ "archives": [{join(archives%archiveentry, ", ")}],
+ "labels": {labels|json}
+ }'
+archiveentry = '\{
+ "node": {node|json},
+ "extension": {extension|json},
+ "type": {type|json},
+ "url": {"{urlbase}{url}archive/{node}{extension}"|json}
+ }'
filediff = '\{
"path": {file|json},
"node": {node|json},
"date": {date|json},
"desc": {desc|utf8|json},
"author": {author|utf8|json},
"parents": [{join(parent%changesetparent, ", ")}],
"children": [{join(child%changesetparent, ", ")}],
@@ -183,28 +222,19 @@ fileannotation = '\{
"author": {author|utf8|json},
"desc": {desc|utf8|json},
"abspath": {file|json},
"targetline": {targetline|json},
"line": {line|json},
"lineno": {lineno|json},
"revdate": {revdate|json}
}'
-filelogentry = '\{
- "node": {node|json},
- "author": {author|json},
- "date": {date|json},
- "pushid": {pushid|json},
- "pushdate": {pushdate|json},
- "desc": {desc|json}
+filelog = '\{
+ "entries": [{join(entries%changelistentry, ", ")}]
}'
-filelog = '\{
- "file": {file|json},
- "entries": [{join(entries%filelogentry, ", ")}]
- }'
graph = '"not yet implemented"'
helptopics = '\{
"topics": [{join(topics%helptopicentry, ", ")}],
"earlycommands": [{join(earlycommands%helptopicentry, ", ")}],
"othercommands": [{join(othercommands%helptopicentry, ", ")}]
}'
helptopicentry = '\{
"topic": {topic|utf8|json},
@@ -218,10 +248,11 @@ filenodelink = ''
filenolink = ''
index = '\{
"entries": [{join(entries%indexentry, ", ")}]
}'
indexentry = '\{
"name": {name|utf8|json},
"description": {description|utf8|json},
"contact": {contact|utf8|json},
- "lastchange": {lastchange|json}
- }'
\ No newline at end of file
+ "lastchange": {lastchange|json},
+ "labels": {labels|json}
+ }'
--- a/hgtemplates/paper/map
+++ b/hgtemplates/paper/map
@@ -71,24 +71,38 @@ fileannotate = fileannotate.tmpl
filediff = filediff.tmpl
filecomparison = filecomparison.tmpl
filelog = filelog.tmpl
fileline = '
<span id="{lineid}">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
filelogentry = filelogentry.tmpl
annotateline = '
- <tr id="{lineid}">
- <td class="annotate">
- <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}"
- title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
+ <tr id="{lineid}"{ifeq(node, originalnode, ' class="thisrev"')}>
+ <td class="annotate parity{blockparity}">
+ {if(blockhead,
+ '<a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}">
+ {rev}
+ </a>')}
+ <div class="annotate-info">
+ <div>
+ <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}">
+ {node|short}</a>
+ {desc|escape|firstline}
+ </div>
+ <div><em>{author|obfuscate}</em></div>
+ <div>parents: {parents%annotateparent}</div>
+ <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a>
+ <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
+ </div>
</td>
<td class="source"><a href="#{lineid}">{linenumber}</a> {line|escape}</td>
</tr>'
-
+annotateparent = '
+ <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rev}</a>'
diffblock = '<div class="bottomline inc-lineno"><pre class="sourcelines wrap">{lines}</pre></div>'
difflineplus = '
<span id="{lineid}" class="plusline">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
difflineminus = '
<span id="{lineid}" class="minusline">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
difflineat = '
<span id="{lineid}" class="atline">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
diffline = '
--- a/hgtemplates/rss/bookmarks.tmpl
+++ b/hgtemplates/rss/bookmarks.tmpl
@@ -1,6 +1,6 @@
{header}
- <title>{repo|escape}: bookmarks </title>
+ <title>{repo|escape}: bookmarks</title>
<description>{repo|escape} bookmark history</description>
{entries%bookmarkentry}
</channel>
</rss>
--- a/hgtemplates/rss/changelogentry.tmpl
+++ b/hgtemplates/rss/changelogentry.tmpl
@@ -1,40 +1,41 @@
<item>
<title>{inbranch%"{if(name, '[{name|escape}] ')}"}{branches%"{if(name, '[{name|escape}] ')}"}{desc|strip|firstline|strip|escape}</title>
<guid isPermaLink="true">{urlbase}{url|urlescape}rev/{node|short}</guid>
- <link>{urlbase}{url|urlescape}rev/{node|short}</link>
+ <link>{urlbase}{url|urlescape}rev/{node|short}</link>
<description>
- <![CDATA[
- <table>
- <tr>
- <th style="text-align:left;">changeset</th>
- <td>{node|short}</td>
- </tr>
- <tr>
- <th style="text-align:left;">branch</th>
- <td>{inbranch%"{name|escape}"}{branches%"{name|escape}"}</td>
- </tr>
- <tr>
- <th style="text-align:left;">bookmark</th>
- <td>{bookmarks%"{name|escape}"}</td>
- </tr>
- <tr>
- <th style="text-align:left;">tag</th>
- <td>{tags%"{name|escape}"}</td>
- </tr>
- <tr>
- <th style="text-align:left;vertical-align:top;">user</th>
- <td>{author|obfuscate}</td>
- </tr>
- <tr>
- <th style="text-align:left;vertical-align:top;">description</th>
- <td>{desc|strip|escape|websub|addbreaks|nonempty}</td>
- </tr>
- <tr>
- <th style="text-align:left;vertical-align:top;">files</th>
- <td>{files}</td>
- </tr>
- </table>
- ]]></description>
+ <![CDATA[
+ <table>
+ <tr>
+ <th style="text-align:left;">changeset</th>
+ <td>{node|short}</td>
+ </tr>
+ <tr>
+ <th style="text-align:left;">branch</th>
+ <td>{inbranch%"{name|escape}"}{branches%"{name|escape}"}</td>
+ </tr>
+ <tr>
+ <th style="text-align:left;">bookmark</th>
+ <td>{bookmarks%"{name|escape}"}</td>
+ </tr>
+ <tr>
+ <th style="text-align:left;">tag</th>
+ <td>{tags%"{name|escape}"}</td>
+ </tr>
+ <tr>
+ <th style="text-align:left;vertical-align:top;">user</th>
+ <td>{author|obfuscate}</td>
+ </tr>
+ <tr>
+ <th style="text-align:left;vertical-align:top;">description</th>
+ <td>{desc|strip|escape|websub|addbreaks|nonempty}</td>
+ </tr>
+ <tr>
+ <th style="text-align:left;vertical-align:top;">files</th>
+ <td>{files}</td>
+ </tr>
+ </table>
+ ]]>
+ </description>
<author>{author|obfuscate}</author>
<pubDate>{date|rfc822date}</pubDate>
</item>
--- a/hgtemplates/rss/tags.tmpl
+++ b/hgtemplates/rss/tags.tmpl
@@ -1,6 +1,6 @@
{header}
- <title>{repo|escape}: tags </title>
+ <title>{repo|escape}: tags</title>
<description>{repo|escape} tag history</description>
{entriesnotip%tagentry}
</channel>
</rss>
--- a/hgtemplates/static/style-gitweb.css
+++ b/hgtemplates/static/style-gitweb.css
@@ -24,16 +24,17 @@ div.log_link {
font-size:10px; font-family:sans-serif; font-style:normal;
position:relative; float:left; width:136px;
}
div.list_head { padding:6px 8px 4px; border:solid #d9d8d1; border-width:1px 0px 0px; font-style:italic; }
a.list { text-decoration:none; color:#000000; }
a.list:hover { text-decoration:underline; color:#880000; }
table { padding:8px 4px; }
th { padding:2px 5px; font-size:12px; text-align:left; }
+.parity0 { background-color:#ffffff; }
tr.dark, .parity1, pre.sourcelines.stripes > :nth-child(4n+4) { background-color:#f6f6f0; }
tr.light:hover, .parity0:hover, tr.dark:hover, .parity1:hover,
pre.sourcelines.stripes > :nth-child(4n+2):hover,
pre.sourcelines.stripes > :nth-child(4n+4):hover,
pre.sourcelines.stripes > :nth-child(4n+1):hover + :nth-child(4n+2),
pre.sourcelines.stripes > :nth-child(4n+3):hover + :nth-child(4n+4) { background-color:#edece6; }
td { padding:2px 5px; font-size:12px; vertical-align:top; }
td.closed { background-color: #99f; }
@@ -47,16 +48,29 @@ td.indexlinks a {
font-weight: bold; text-align: center; text-decoration: none;
font-size: 10px;
}
td.indexlinks a:hover { background-color: #6666aa; }
div.pre { font-family:monospace; font-size:12px; white-space:pre; }
div.diff_info { font-family:monospace; color:#000099; background-color:#edece6; font-style:italic; }
div.index_include { border:solid #d9d8d1; border-width:0px 0px 1px; padding:12px 8px; }
div.search { margin:4px 8px; position:absolute; top:56px; right:12px }
+tr.thisrev a { color:#999999; text-decoration: none; }
+tr.thisrev pre { color:#009900; }
+div.annotate-info {
+ display: none;
+ position: absolute;
+ background-color: #FFFFFF;
+ border: 1px solid #d9d8d1;
+ text-align: left;
+ color: #000000;
+ padding: 5px;
+}
+div.annotate-info a { color: #0000FF; text-decoration: underline; }
+td.annotate:hover div.annotate-info { display: inline; }
.linenr { color:#999999; text-decoration:none }
div.rss_logo { float: right; white-space: nowrap; }
div.rss_logo a {
padding:3px 6px; line-height:10px;
border:1px solid; border-color:#fcc7a5 #7d3302 #3e1a01 #ff954e;
color:#ffffff; background-color:#ff6600;
font-weight:bold; font-family:sans-serif; font-size:10px;
text-align:center; text-decoration:none;
--- a/hgtemplates/static/style-paper.css
+++ b/hgtemplates/static/style-paper.css
@@ -203,17 +203,29 @@ h3 {
.bigtable .description { }
.bigtable .description .base { font-size: 70%; float: right; line-height: 1.66; }
.bigtable .node { width: 5em; font-family: monospace;}
.bigtable .permissions { width: 8em; text-align: left;}
.bigtable .size { width: 5em; text-align: right; }
.bigtable .annotate { text-align: right; }
.bigtable td.annotate { font-size: smaller; }
.bigtable td.source { font-size: inherit; }
-
+tr.thisrev a { color:#999999; text-decoration: none; }
+tr.thisrev td.source { color:#009900; }
+div.annotate-info {
+ display: none;
+ position: absolute;
+ background-color: #FFFFFF;
+ border: 1px solid #999;
+ text-align: left;
+ color: #000000;
+ padding: 5px;
+}
+div.annotate-info a { color: #0000FF; }
+td.annotate:hover div.annotate-info { display: inline; }
.source, .sourcefirst {
font-family: monospace;
white-space: pre;
padding: 1px 4px;
font-size: 90%;
}
.sourcefirst { border-bottom: 1px solid #999; font-weight: bold; }
.source a { color: #999; font-size: smaller; font-family: monospace;}
--- a/hgtemplates/static/style.css
+++ b/hgtemplates/static/style.css
@@ -5,16 +5,29 @@ a { text-decoration:none; }
.parity0 { background-color: #ddd; color: #000; }
.parity1 { background-color: #eee; color: #000; }
.lineno { width: 60px; color: #aaa; font-size: smaller;
text-align: right; }
.plusline { color: green; }
.minusline { color: red; }
.atline { color: purple; }
.annotate { font-size: smaller; text-align: right; padding-right: 1em; }
+tr.thisrev a { color:#999999; text-decoration: none; }
+tr.thisrev pre { color:#009900; }
+div.annotate-info {
+ display: none;
+ position: absolute;
+ background-color: #FFFFFF;
+ border: 1px solid #000000;
+ text-align: left;
+ color: #000000;
+ padding: 5px;
+}
+div.annotate-info a { color: #0000FF; }
+td.annotate:hover div.annotate-info { display: inline; }
.buttons a {
background-color: #666;
padding: 2pt;
color: white;
font-family: sans-serif;
font-weight: bold;
}
.navigate a {