Mercurial > public > mercurial-scm > hg-stable
diff mercurial/hgweb/webutil.py @ 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 | 1c75249e159b |
children | 268b39770c28 |
line wrap: on
line diff
--- 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)