narrowtemplates.py
48 lines
| 1.5 KiB
| text/x-python
|
PythonLexer
Augie Fackler
|
r36096 | # narrowtemplates.py - added template keywords for narrow clones | ||
# | ||||
# Copyright 2017 Google, Inc. | ||||
# | ||||
# This software may be used and distributed according to the terms of the | ||||
# GNU General Public License version 2 or any later version. | ||||
from __future__ import absolute_import | ||||
from mercurial import ( | ||||
Augie Fackler
|
r36108 | registrar, | ||
Augie Fackler
|
r36107 | revlog, | ||
Augie Fackler
|
r36096 | ) | ||
Augie Fackler
|
r36108 | keywords = {} | ||
templatekeyword = registrar.templatekeyword(keywords) | ||||
revsetpredicate = registrar.revsetpredicate() | ||||
Augie Fackler
|
r36096 | def _isellipsis(repo, rev): | ||
Augie Fackler
|
r36107 | if repo.changelog.flags(rev) & revlog.REVIDX_ELLIPSIS: | ||
Augie Fackler
|
r36096 | return True | ||
return False | ||||
Yuya Nishihara
|
r36531 | @templatekeyword('ellipsis', requires={'repo', 'ctx'}) | ||
def ellipsis(context, mapping): | ||||
Yuya Nishihara
|
r36457 | """String. 'ellipsis' if the change is an ellipsis node, else ''.""" | ||
Yuya Nishihara
|
r36531 | repo = context.resource(mapping, 'repo') | ||
ctx = context.resource(mapping, 'ctx') | ||||
Augie Fackler
|
r36096 | if _isellipsis(repo, ctx.rev()): | ||
return 'ellipsis' | ||||
return '' | ||||
Yuya Nishihara
|
r36531 | @templatekeyword('outsidenarrow', requires={'repo', 'ctx'}) | ||
def outsidenarrow(context, mapping): | ||||
Yuya Nishihara
|
r36457 | """String. 'outsidenarrow' if the change affects no tracked files, | ||
else ''.""" | ||||
Yuya Nishihara
|
r36531 | repo = context.resource(mapping, 'repo') | ||
ctx = context.resource(mapping, 'ctx') | ||||
Martin von Zweigbergk
|
r36490 | m = repo.narrowmatch() | ||
if not m.always(): | ||||
Augie Fackler
|
r36096 | if not any(m(f) for f in ctx.files()): | ||
return 'outsidenarrow' | ||||
return '' | ||||
Pulkit Goyal
|
r39000 | @revsetpredicate('ellipsis()') | ||
Augie Fackler
|
r36096 | def ellipsisrevset(repo, subset, x): | ||
Yuya Nishihara
|
r36457 | """Changesets that are ellipsis nodes.""" | ||
Augie Fackler
|
r36096 | return subset.filter(lambda r: _isellipsis(repo, r)) | ||