diff --git a/mercurial/hgweb.py b/mercurial/hgweb.py --- a/mercurial/hgweb.py +++ b/mercurial/hgweb.py @@ -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])) diff --git a/templates/changelog.tmpl b/templates/changelog.tmpl --- a/templates/changelog.tmpl +++ b/templates/changelog.tmpl @@ -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> diff --git a/templates/changeset.tmpl b/templates/changeset.tmpl --- a/templates/changeset.tmpl +++ b/templates/changeset.tmpl @@ -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> diff --git a/templates/fileannotate.tmpl b/templates/fileannotate.tmpl --- a/templates/fileannotate.tmpl +++ b/templates/fileannotate.tmpl @@ -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> diff --git a/templates/filediff.tmpl b/templates/filediff.tmpl --- a/templates/filediff.tmpl +++ b/templates/filediff.tmpl @@ -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> diff --git a/templates/filelog.tmpl b/templates/filelog.tmpl --- a/templates/filelog.tmpl +++ b/templates/filelog.tmpl @@ -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> diff --git a/templates/filerevision.tmpl b/templates/filerevision.tmpl --- a/templates/filerevision.tmpl +++ b/templates/filerevision.tmpl @@ -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> diff --git a/templates/header.tmpl b/templates/header.tmpl --- a/templates/header.tmpl +++ b/templates/header.tmpl @@ -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; } diff --git a/templates/manifest.tmpl b/templates/manifest.tmpl --- a/templates/manifest.tmpl +++ b/templates/manifest.tmpl @@ -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> diff --git a/templates/map b/templates/map --- a/templates/map +++ b/templates/map @@ -25,3 +25,5 @@ changelogparent = "<tr><td align="right" 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>"