comparison mercurial/util.py @ 1081:8b7d63489db3

Change canonpath to not know about repo objects Code in util should not have any knowledge about repo objects
author mpm@selenic.com
date Fri, 26 Aug 2005 23:29:10 -0700
parents e254bcbfe636
children ce96e316278a
comparison
equal deleted inserted replaced
1080:253072f39205 1081:8b7d63489db3
83 while a and b and a[-1] == b[-1]: 83 while a and b and a[-1] == b[-1]:
84 a.pop(), b.pop() 84 a.pop(), b.pop()
85 b.reverse() 85 b.reverse()
86 return os.sep.join((['..'] * len(a)) + b) 86 return os.sep.join((['..'] * len(a)) + b)
87 87
88 def canonpath(repo, cwd, myname): 88 def canonpath(root, cwd, myname):
89 rootsep = repo.root + os.sep 89 rootsep = root + os.sep
90 name = myname 90 name = myname
91 if not name.startswith(os.sep): 91 if not name.startswith(os.sep):
92 name = os.path.join(repo.root, cwd, name) 92 name = os.path.join(root, cwd, name)
93 name = os.path.normpath(name) 93 name = os.path.normpath(name)
94 if name.startswith(rootsep): 94 if name.startswith(rootsep):
95 return pconvert(name[len(rootsep):]) 95 return pconvert(name[len(rootsep):])
96 elif name == repo.root: 96 elif name == root:
97 return '' 97 return ''
98 else: 98 else:
99 raise Abort('%s not under repository root' % myname) 99 raise Abort('%s not under root' % myname)
100 100
101 def matcher(repo, cwd, names, inc, exc, head=''): 101 def matcher(canonroot, cwd, names, inc, exc, head=''):
102 def patkind(name): 102 def patkind(name):
103 for prefix in 're:', 'glob:', 'path:', 'relpath:': 103 for prefix in 're:', 'glob:', 'path:', 'relpath:':
104 if name.startswith(prefix): return name.split(':', 1) 104 if name.startswith(prefix): return name.split(':', 1)
105 for c in name: 105 for c in name:
106 if c in _globchars: return 'glob', name 106 if c in _globchars: return 'glob', name
133 pats = [] 133 pats = []
134 files = [] 134 files = []
135 roots = [] 135 roots = []
136 for kind, name in map(patkind, names): 136 for kind, name in map(patkind, names):
137 if kind in ('glob', 'relpath'): 137 if kind in ('glob', 'relpath'):
138 name = canonpath(repo, cwd, name) 138 name = canonpath(canonroot, cwd, name)
139 if name == '': 139 if name == '':
140 kind, name = 'glob', '**' 140 kind, name = 'glob', '**'
141 if kind in ('glob', 'path', 're'): 141 if kind in ('glob', 'path', 're'):
142 pats.append((kind, name)) 142 pats.append((kind, name))
143 if kind == 'glob': 143 if kind == 'glob':