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 @@