hgweb: add tags links and manifest links

This adds a simple new tags page to browse by tag, adds the tag link
everywhere, and adds manifest links to the tags and changelog pages.
This commit is contained in:
mpm@selenic.com 2005-05-26 12:24:01 -08:00
parent e687fa3c97
commit 546aa0fdbb
10 changed files with 46 additions and 2 deletions

View File

@ -240,7 +240,9 @@ class hgweb:
yield l
count = self.repo.changelog.count()
cl = self.repo.changelog
mf = cl.read(cl.tip())[0]
count = cl.count()
pos = pos or count - 1
end = min(pos, count - 1)
start = max(0, pos - self.maxchanges)
@ -251,6 +253,7 @@ class hgweb:
footer = self.footer(),
repo = self.reponame,
changenav = changenav,
manifest = hex(mf),
rev = pos, changesets = count, entries = changelist)
def changeset(self, nodeid):
@ -492,6 +495,30 @@ class hgweb:
up = up(path),
entries = filelist)
def tags(self):
cl = self.repo.changelog
mf = cl.read(cl.tip())[0]
self.repo.lookup(0) # prime the cache
i = self.repo.tags.items()
i.sort()
def entries():
parity = 0
for k,n in i:
yield self.t("tagentry",
parity = parity,
tag = k,
node = hex(n))
parity = 1 - parity
yield self.t("tags",
header = self.header(),
footer = self.footer(),
repo = self.reponame,
manifest = hex(mf),
entries = entries)
def filediff(self, file, changeset):
n = bin(changeset)
cl = self.repo.changelog
@ -538,6 +565,9 @@ class hgweb:
elif args['cmd'][0] == 'manifest':
write(self.manifest(args['manifest'][0], args['path'][0]))
elif args['cmd'][0] == 'tags':
write(self.tags())
elif args['cmd'][0] == 'filediff':
write(self.filediff(args['file'][0], args['node'][0]))

View File

@ -2,6 +2,12 @@
<title>#repo#: changelog</title>
</head>
<body>
<div class="buttons">
<a href="?cmd=tags">tags</a>
<a href="?cmd=manifest;manifest=#manifest#;path=/">manifest</a>
</div>
<h2>changelog for #repo#</h2>
<form>

View File

@ -5,6 +5,7 @@
<div class="buttons">
<a href="?cmd=changelog;rev=#rev#">changelog</a>
<a href="?cmd=tags">tags</a>
<a href="?cmd=manifest;manifest=#manifest#;path=/">manifest</a>
</div>

View File

@ -5,6 +5,7 @@
<div class="buttons">
<a href="?cmd=changelog;rev=#rev#">changelog</a>
<a href="?cmd=tags">tags</a>
<a href="?cmd=changeset;node=#node#">changeset</a>
<a href="?cmd=manifest;manifest=#manifest#;path=#path#">manifest</a>
<a href="?cmd=file;file=#file#;filenode=#filenode#">file</a>

View File

@ -5,6 +5,7 @@
<div class="buttons">
<a href="?cmd=changelog;rev=#rev#">changelog</a>
<a href="?cmd=tags">tags</a>
<a href="?cmd=changeset;node=#node#">changeset</a>
<a href="?cmd=file;file=#file#;filenode=#filenode#">file</a>
<a href="?cmd=filelog;file=#file#;filenode=#filenode#">revisions</a>

View File

@ -5,6 +5,7 @@
<div class="buttons">
<a href="?cmd=changelog">changelog</a>
<a href="?cmd=tags">tags</a>
<a href="?cmd=file;file=#file#;filenode=#filenode#">file</a>
<a href="?cmd=annotate;file=#file#;filenode=#filenode#">annotate</a>
</div>

View File

@ -5,6 +5,7 @@
<div class="buttons">
<a href="?cmd=changelog;rev=#rev#">changelog</a>
<a href="?cmd=tags">tags</a>
<a href="?cmd=changeset;node=#node#">changeset</a>
<a href="?cmd=manifest;manifest=#manifest#;path=#path#">manifest</a>
<a href="?cmd=filelog;file=#file#;filenode=#filenode#">revisions</a>

View File

@ -6,7 +6,7 @@ Content-type: text/html
<style type="text/css">
a { text-decoration:none; }
.parity0 { background-color: #eeeeee; }
.parity1 { background-color: #ffffff; }
.parity1 { background-color: #f8f8f8; }
.lineno { width: 60px; color: #cccccc; font-size: smaller; }
.plusline { color: green; }
.minusline { color: red; }

View File

@ -5,6 +5,7 @@
<div class="buttons">
<a href="?cmd=changelog;rev=#rev#">changelog</a>
<a href="?cmd=tags">tags</a>
<a href="?cmd=changeset;node=#node#">changeset</a>
</div>

View File

@ -25,3 +25,5 @@ changelogparent = "<tr><td align="right">parent:&nbsp;</td><td><a href="?cmd=cha
changesetparent = "<tr><td class="metatag">parent:</td><td><a href="?cmd=changeset;node=#node#">#node#</a></td></tr>"
filerevparent = "<tr><td class="metatag">parent:</td><td><a href="?cmd=file;file=#file#;filenode=#node#">#node#</a></td></tr>"
fileannotateparent = "<tr><td class="metatag">parent:</td><td><a href="?cmd=annotate;file=#file#;filenode=#node#">#node#</a></td></tr>"
tags = tags.tmpl
tagentry = "<div class="parity#parity#"><tt>#node#</tt> <a href="?cmd=changeset;node=#node#">#tag#</a><br /></div>"