##// END OF EJS Templates
mq: Fix --qrefresh --short to work with --exclude and --include...
mq: Fix --qrefresh --short to work with --exclude and --include pmezard expects hg qref -s -X b to apply the -X to the list of files in the patch, and thus remove b from the patch. That's how it worked before f7fc5f5ecd62. That change seemed sensible, but it wasn't... mpm says (17:22:30) pmezard_: kiilerix1: do you mean that -X should be forbidden with -s ? (17:22:54) pmezard_: kiilerix1: and --include too (17:23:03) mpm: No because you should be able to say hg qref -s foo* -X foo-bar so mpm expects hg qref -s -X b * to apply the -X to the list of files in the working directory, and thus don't include b in the patch This patch tries to make both usecases work by creating a matchfn which uses the include/excludes but not the filelist.

File last commit:

r6834:cbdfd08e default
r7177:09ed32b7 default
Show More
match.py
47 lines | 1.4 KiB | text/x-python | PythonLexer
import util
class _match(object):
def __init__(self, root, cwd, files, mf, ap):
self._root = root
self._cwd = cwd
self._files = files
self._fmap = dict.fromkeys(files)
self.matchfn = mf
self._anypats = ap
def __call__(self, fn):
return self.matchfn(fn)
def __iter__(self):
for f in self._files:
yield f
def bad(self, f, msg):
return True
def dir(self, f):
pass
def missing(self, f):
pass
def exact(self, f):
return f in self._fmap
def rel(self, f):
return util.pathto(self._root, self._cwd, f)
def files(self):
return self._files
def anypats(self):
return self._anypats
class always(_match):
def __init__(self, root, cwd):
_match.__init__(self, root, cwd, [], lambda f: True, False)
class never(_match):
def __init__(self, root, cwd):
_match.__init__(self, root, cwd, [], lambda f: False, False)
class exact(_match):
def __init__(self, root, cwd, files):
_match.__init__(self, root, cwd, files, lambda f: f in files, False)
class match(_match):
def __init__(self, root, cwd, patterns, include, exclude, default):
f, mf, ap = util.matcher(root, cwd, patterns, include, exclude,
None, default)
_match.__init__(self, root, cwd, f, mf, ap)