comparison hgext/narrow/narrowcopies.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 f85e32a5e5c8
comparison
equal deleted inserted replaced
36078:7f68235f23ff 36079:a2a6e724d61a
1 # narrowcopies.py - extensions to mercurial copies module to support narrow
2 # clones
3 #
4 # Copyright 2017 Google, Inc.
5 #
6 # This software may be used and distributed according to the terms of the
7 # GNU General Public License version 2 or any later version.
8
9 from __future__ import absolute_import
10
11 from mercurial import (
12 copies,
13 extensions,
14 util,
15 )
16
17 def setup(repo):
18 def _computeforwardmissing(orig, a, b, match=None):
19 missing = orig(a, b, match)
20 if util.safehasattr(repo, 'narrowmatch'):
21 narrowmatch = repo.narrowmatch()
22 missing = filter(narrowmatch, missing)
23 return missing
24
25 def _checkcopies(orig, srcctx, dstctx, f, base, tca, remotebase, limit,
26 data):
27 if util.safehasattr(repo, 'narrowmatch'):
28 narrowmatch = repo.narrowmatch()
29 if not narrowmatch(f):
30 return
31 orig(srcctx, dstctx, f, base, tca, remotebase, limit, data)
32
33 extensions.wrapfunction(copies, '_computeforwardmissing',
34 _computeforwardmissing)
35 extensions.wrapfunction(copies, '_checkcopies', _checkcopies)