# HG changeset patch # User Matt Mackall # Date 1243151774 18000 # Node ID aa4fcb5c46f172c90e73f73519403fbcd98e3ff6 # Parent 63a7ed2128d5dadd15c99f66d0a1f31b82a14ded match: optimize _globprefix diff -r 63a7ed2128d5 -r aa4fcb5c46f1 mercurial/match.py --- a/mercurial/match.py Sun May 24 02:56:14 2009 -0500 +++ b/mercurial/match.py Sun May 24 02:56:14 2009 -0500 @@ -63,8 +63,6 @@ if pat.startswith(prefix + ':'): return pat.split(':', 1) return default, pat -_globchars = set('[{*?') - def _globre(pat, head, tail): "convert a glob pattern into a regexp" i, n = 0, len(pat) @@ -159,16 +157,12 @@ raise util.Abort("invalid pattern (%s): %s" % (k, p)) raise util.Abort("invalid pattern") -def _containsglob(name): - for c in name: - if c in _globchars: return True - return False - def _globprefix(pat): '''return the non-glob prefix of a path, e.g. foo/* -> foo''' root = [] for p in pat.split('/'): - if _containsglob(p): break + if '[' in p or '{' in p or '*' in p or '?' in p: + break root.append(p) return '/'.join(root) or '.'