narrowtemplates.py
48 lines
| 1.3 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 | util, | ||
) | ||||
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 | ||||
Augie Fackler
|
r36108 | @templatekeyword('ellipsis') | ||
Augie Fackler
|
r36096 | def ellipsis(repo, ctx, templ, **args): | ||
""":ellipsis: String. 'ellipsis' if the change is an ellipsis node, | ||||
else ''.""" | ||||
if _isellipsis(repo, ctx.rev()): | ||||
return 'ellipsis' | ||||
return '' | ||||
Augie Fackler
|
r36108 | @templatekeyword('outsidenarrow') | ||
Augie Fackler
|
r36096 | def outsidenarrow(repo, ctx, templ, **args): | ||
""":outsidenarrow: String. 'outsidenarrow' if the change affects no | ||||
tracked files, else ''.""" | ||||
if util.safehasattr(repo, 'narrowmatch'): | ||||
m = repo.narrowmatch() | ||||
if not any(m(f) for f in ctx.files()): | ||||
return 'outsidenarrow' | ||||
return '' | ||||
Augie Fackler
|
r36108 | @revsetpredicate('ellipsis') | ||
Augie Fackler
|
r36096 | def ellipsisrevset(repo, subset, x): | ||
"""``ellipsis()`` | ||||
Changesets that are ellipsis nodes. | ||||
""" | ||||
return subset.filter(lambda r: _isellipsis(repo, r)) | ||||