Mercurial > hg
diff hgext/narrow/narrowtemplates.py @ 36079:a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Adjustments:
* renamed src to hgext/narrow
* marked extension experimental
* added correct copyright header where it was missing
* updated hgrc extension enable line in library.sh
* renamed library.sh to narrow-library.sh
* dropped all files from repo root as they're not interesting
* dropped test-pyflakes.t, test-check-code.t and test-check-py3-compat.t
* renamed remaining tests to all be test-narrow-* when they didn't already
* fixed test-narrow-expanddirstate.t to refer to narrow and not narrowhg
* fixed tests that wanted `update -C .` instead of `merge --abort`
* corrected a two-space indent in narrowspec.py
* added a missing _() in narrowcommands.py
* fixed imports to pass the import checker
* narrow only adds its --include and --exclude to clone if sparse isn't
enabled to avoid breaking test-duplicateoptions.py. This is a kludge,
and we'll need to come up with a better solution in the future.
These were more or less the minimum to import something that would
pass tests and not create a bunch of files we'll never use.
Changes I intend to make as followups:
* rework the test-narrow-*-tree.t tests to use the new testcases
functionality in run-tests.py
* remove lots of monkeypatches of core things
Differential Revision: https://phab.mercurial-scm.org/D1974
author | Augie Fackler <augie@google.com> |
---|---|
date | Mon, 29 Jan 2018 16:19:33 -0500 |
parents | |
children | 9445a3141501 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hgext/narrow/narrowtemplates.py Mon Jan 29 16:19:33 2018 -0500 @@ -0,0 +1,50 @@ +# 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 ( + revset, + templatekw, + util, +) + +from . import narrowrevlog + +def _isellipsis(repo, rev): + if repo.changelog.flags(rev) & narrowrevlog.ELLIPSIS_NODE_FLAG: + return True + return False + +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 '' + +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 '' + +def ellipsisrevset(repo, subset, x): + """``ellipsis()`` + Changesets that are ellipsis nodes. + """ + return subset.filter(lambda r: _isellipsis(repo, r)) + +def setup(): + templatekw.keywords['ellipsis'] = ellipsis + templatekw.keywords['outsidenarrow'] = outsidenarrow + + revset.symbols['ellipsis'] = ellipsisrevset + revset.safesymbols.add('ellipsis')