--- a/mercurial/hgweb/webcommands.py Tue Aug 18 22:15:46 2015 +0900
+++ b/mercurial/hgweb/webcommands.py Tue Sep 01 22:28:45 2015 +0800
@@ -639,35 +639,10 @@
The ``branches`` template is rendered.
"""
- tips = []
- heads = web.repo.heads()
- parity = paritygen(web.stripecount)
- sortkey = lambda item: (not item[1], item[0].rev())
-
- def entries(limit, **map):
- count = 0
- if not tips:
- for tag, hs, tip, closed in web.repo.branchmap().iterbranches():
- tips.append((web.repo[tip], closed))
- for ctx, closed in sorted(tips, key=sortkey, reverse=True):
- if limit > 0 and count >= limit:
- return
- count += 1
- if closed:
- status = 'closed'
- elif ctx.node() not in heads:
- status = 'inactive'
- else:
- status = 'open'
- yield {'parity': parity.next(),
- 'branch': ctx.branch(),
- 'status': status,
- 'node': ctx.hex(),
- 'date': ctx.date()}
-
+ entries = webutil.branchentries(web.repo, web.stripecount)
+ latestentry = webutil.branchentries(web.repo, web.stripecount, 1)
return tmpl('branches', node=hex(web.repo.changelog.tip()),
- entries=lambda **x: entries(0, **x),
- latestentry=lambda **x: entries(1, **x))
+ entries=entries, latestentry=latestentry)
@webcommand('summary')
def summary(web, req, tmpl):
--- a/mercurial/hgweb/webutil.py Tue Aug 18 22:15:46 2015 +0900
+++ b/mercurial/hgweb/webutil.py Tue Sep 01 22:28:45 2015 +0800
@@ -199,6 +199,37 @@
for t in repo.nodebookmarks(node):
yield tmpl(t1, bookmark=t, **args)
+def branchentries(repo, stripecount, limit=0):
+ tips = []
+ heads = repo.heads()
+ parity = paritygen(stripecount)
+ sortkey = lambda item: (not item[1], item[0].rev())
+
+ def entries(**map):
+ count = 0
+ if not tips:
+ for tag, hs, tip, closed in repo.branchmap().iterbranches():
+ tips.append((repo[tip], closed))
+ for ctx, closed in sorted(tips, key=sortkey, reverse=True):
+ if limit > 0 and count >= limit:
+ return
+ count += 1
+ if closed:
+ status = 'closed'
+ elif ctx.node() not in heads:
+ status = 'inactive'
+ else:
+ status = 'open'
+ yield {
+ 'parity': parity.next(),
+ 'branch': ctx.branch(),
+ 'status': status,
+ 'node': ctx.hex(),
+ 'date': ctx.date()
+ }
+
+ return entries
+
def cleanpath(repo, path):
path = path.lstrip('/')
return pathutil.canonpath(repo.root, '', path)