diff -r 104c9ed93fc5 -r 3e66eec9a814 mercurial/match.py --- a/mercurial/match.py Fri Feb 04 16:32:14 2011 -0300 +++ b/mercurial/match.py Sat Jan 15 16:02:03 2011 +0100 @@ -39,11 +39,11 @@ self._anypats = bool(include or exclude) if include: - im = _buildmatch(_normalize(include, 'glob', root, cwd, auditor), - '(?:/|$)') + pats = _normalize(include, 'glob', root, cwd, auditor) + self.includepat, im = _buildmatch(pats, '(?:/|$)') if exclude: - em = _buildmatch(_normalize(exclude, 'glob', root, cwd, auditor), - '(?:/|$)') + pats = _normalize(exclude, 'glob', root, cwd, auditor) + self.excludepat, em = _buildmatch(pats, '(?:/|$)') if exact: self._files = patterns pm = self.exact @@ -51,7 +51,7 @@ pats = _normalize(patterns, default, root, cwd, auditor) self._files = _roots(pats) self._anypats = self._anypats or _anypats(pats) - pm = _buildmatch(pats, '$') + self.patternspat, pm = _buildmatch(pats, '$') if patterns or exact: if include: @@ -246,7 +246,7 @@ pat = '(?:%s)' % '|'.join([_regex(k, p, tail) for (k, p) in pats]) if len(pat) > 20000: raise OverflowError() - return re.compile(pat).match + return pat, re.compile(pat).match except OverflowError: # We're using a Python with a tiny regex engine and we # made it explode, so we'll divide the pattern list in two @@ -254,8 +254,9 @@ l = len(pats) if l < 2: raise - a, b = _buildmatch(pats[:l//2], tail), _buildmatch(pats[l//2:], tail) - return lambda s: a(s) or b(s) + pata, a = _buildmatch(pats[:l//2], tail), + patb, b = _buildmatch(pats[l//2:], tail) + return pat, lambda s: a(s) or b(s) except re.error: for k, p in pats: try: