narrowtemplates.py
45 lines
| 1.3 KiB
| text/x-python
|
PythonLexer
|
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 ( | ||||
|
r36108 | registrar, | ||
|
r36107 | revlog, | ||
|
r36096 | util, | ||
) | ||||
|
r36108 | keywords = {} | ||
templatekeyword = registrar.templatekeyword(keywords) | ||||
revsetpredicate = registrar.revsetpredicate() | ||||
|
r36096 | def _isellipsis(repo, rev): | ||
|
r36107 | if repo.changelog.flags(rev) & revlog.REVIDX_ELLIPSIS: | ||
|
r36096 | return True | ||
return False | ||||
|
r36108 | @templatekeyword('ellipsis') | ||
|
r36096 | def ellipsis(repo, ctx, templ, **args): | ||
|
r36457 | """String. 'ellipsis' if the change is an ellipsis node, else ''.""" | ||
|
r36096 | if _isellipsis(repo, ctx.rev()): | ||
return 'ellipsis' | ||||
return '' | ||||
|
r36108 | @templatekeyword('outsidenarrow') | ||
|
r36096 | def outsidenarrow(repo, ctx, templ, **args): | ||
|
r36457 | """String. 'outsidenarrow' if the change affects no tracked files, | ||
else ''.""" | ||||
|
r36096 | if util.safehasattr(repo, 'narrowmatch'): | ||
m = repo.narrowmatch() | ||||
if not any(m(f) for f in ctx.files()): | ||||
return 'outsidenarrow' | ||||
return '' | ||||
|
r36108 | @revsetpredicate('ellipsis') | ||
|
r36096 | def ellipsisrevset(repo, subset, x): | ||
|
r36457 | """Changesets that are ellipsis nodes.""" | ||
|
r36096 | return subset.filter(lambda r: _isellipsis(repo, r)) | ||