diff mercurial/util.py @ 4183:ce3ecf99a18b

util._matcher: fix handling of relglob: patterns
author Alexis S. L. Carvalho <alexis@cecm.usp.br>
date Sat, 10 Mar 2007 23:00:48 -0300
parents 01c4ea5e788c
children b1716a1f79c4
line wrap: on
line diff
--- a/mercurial/util.py
+++ b/mercurial/util.py
@@ -433,7 +433,7 @@ def _matcher(canonroot, cwd, names, inc,
         elif kind == 'path':
             return '^' + re.escape(name) + '(?:/|$)'
         elif kind == 'relglob':
-            return head + globre(name, '(?:|.*/)', tail)
+            return head + globre(name, '(?:|.*/)', '(?:/|$)')
         elif kind == 'relpath':
             return head + re.escape(name) + tail
         elif kind == 'relre':
@@ -479,7 +479,9 @@ def _matcher(canonroot, cwd, names, inc,
             name = canonpath(canonroot, cwd, name)
             if name == '':
                 kind, name = 'glob', '**'
-        if kind in ('glob', 'path', 're'):
+        elif kind == 'relglob':
+            name = normpath(name)
+        if kind in ('glob', 'path', 're', 'relglob'):
             pats.append((kind, name))
         if kind == 'glob':
             root = globprefix(name)
@@ -487,6 +489,8 @@ def _matcher(canonroot, cwd, names, inc,
         elif kind == 'relpath':
             files.append((kind, name))
             roots.append(name)
+        elif kind == 'relglob':
+            roots.append('.')
 
     patmatch = matchfn(pats, '$') or always
     filematch = matchfn(files, '(?:/|$)') or always