Mercurial > hg
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': |