Mercurial > hg
changeset 26129:a103ecb8a04a
hgweb: move branchentries code from webcommands to webutil
author | Anton Shestakov <av6@dwimlabs.net> |
---|---|
date | Tue, 01 Sep 2015 22:28:45 +0800 |
parents | 51f6940d3b4f |
children | e466c15597a3 |
files | mercurial/hgweb/webcommands.py mercurial/hgweb/webutil.py |
diffstat | 2 files changed, 34 insertions(+), 28 deletions(-) [+] |
line wrap: on
line diff
--- 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)