diff mercurial/hgweb.py @ 168:65cf1b0cfe86

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.
author mpm@selenic.com
date Thu, 26 May 2005 12:24:01 -0800
parents 39624c47060f
children e9b1147db448
line wrap: on
line diff
--- a/mercurial/hgweb.py	Thu May 26 11:15:05 2005 -0800
+++ b/mercurial/hgweb.py	Thu May 26 12:24:01 2005 -0800
@@ -240,7 +240,9 @@
 
             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 @@
                      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 @@
                      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 @@
         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]))