##// END OF EJS Templates
narrow: make restrictpatterns a little more idiomatic...
Augie Fackler -
r36117:8fd0a9e2 default
parent child Browse files
Show More
@@ -346,10 +346,8 b' def applyacl_narrow(repo, kwargs):'
346 req_includes = set(kwargs.get('includepats', []))
346 req_includes = set(kwargs.get('includepats', []))
347 req_excludes = set(kwargs.get('excludepats', []))
347 req_excludes = set(kwargs.get('excludepats', []))
348
348
349 invalid_includes = []
349 req_includes, req_excludes, invalid_includes = narrowspec.restrictpatterns(
350 req_includes, req_excludes = narrowspec.restrictpatterns(
350 req_includes, req_excludes, user_includes, user_excludes)
351 req_includes, req_excludes,
352 user_includes, user_excludes, invalid_includes)
353
351
354 if invalid_includes:
352 if invalid_includes:
355 raise error.Abort(
353 raise error.Abort(
@@ -134,7 +134,7 b' def archivenarrowcmd(orig, ui, repo, *ar'
134 repo_includes, repo_excludes = repo.narrowpats
134 repo_includes, repo_excludes = repo.narrowpats
135 includes = set(opts.get('include', []))
135 includes = set(opts.get('include', []))
136 excludes = set(opts.get('exclude', []))
136 excludes = set(opts.get('exclude', []))
137 includes, excludes = narrowspec.restrictpatterns(
137 includes, excludes, unused_invalid = narrowspec.restrictpatterns(
138 includes, excludes, repo_includes, repo_excludes)
138 includes, excludes, repo_includes, repo_excludes)
139 if includes:
139 if includes:
140 opts['include'] = includes
140 opts['include'] = includes
@@ -153,8 +153,7 b' def save(repo, includepats, excludepats)'
153 repo = share._getsrcrepo(repo)
153 repo = share._getsrcrepo(repo)
154 repo.vfs.write(FILENAME, spec)
154 repo.vfs.write(FILENAME, spec)
155
155
156 def restrictpatterns(req_includes, req_excludes, repo_includes, repo_excludes,
156 def restrictpatterns(req_includes, req_excludes, repo_includes, repo_excludes):
157 invalid_includes=None):
158 r""" Restricts the patterns according to repo settings,
157 r""" Restricts the patterns according to repo settings,
159 results in a logical AND operation
158 results in a logical AND operation
160
159
@@ -162,26 +161,26 b' def restrictpatterns(req_includes, req_e'
162 :param req_excludes: requested excludes
161 :param req_excludes: requested excludes
163 :param repo_includes: repo includes
162 :param repo_includes: repo includes
164 :param repo_excludes: repo excludes
163 :param repo_excludes: repo excludes
165 :param invalid_includes: an array to collect invalid includes
164 :return: include patterns, exclude patterns, and invalid include patterns.
166 :return: include and exclude patterns
167
165
168 >>> restrictpatterns({'f1','f2'}, {}, ['f1'], [])
166 >>> restrictpatterns({'f1','f2'}, {}, ['f1'], [])
169 (set(['f1']), {})
167 (set(['f1']), {}, [])
170 >>> restrictpatterns({'f1'}, {}, ['f1','f2'], [])
168 >>> restrictpatterns({'f1'}, {}, ['f1','f2'], [])
171 (set(['f1']), {})
169 (set(['f1']), {}, [])
172 >>> restrictpatterns({'f1/fc1', 'f3/fc3'}, {}, ['f1','f2'], [])
170 >>> restrictpatterns({'f1/fc1', 'f3/fc3'}, {}, ['f1','f2'], [])
173 (set(['f1/fc1']), {})
171 (set(['f1/fc1']), {}, [])
174 >>> restrictpatterns({'f1_fc1'}, {}, ['f1','f2'], [])
172 >>> restrictpatterns({'f1_fc1'}, {}, ['f1','f2'], [])
175 ([], set(['path:.']))
173 ([], set(['path:.']), [])
176 >>> restrictpatterns({'f1/../f2/fc2'}, {}, ['f1','f2'], [])
174 >>> restrictpatterns({'f1/../f2/fc2'}, {}, ['f1','f2'], [])
177 (set(['f2/fc2']), {})
175 (set(['f2/fc2']), {}, [])
178 >>> restrictpatterns({'f1/../f3/fc3'}, {}, ['f1','f2'], [])
176 >>> restrictpatterns({'f1/../f3/fc3'}, {}, ['f1','f2'], [])
179 ([], set(['path:.']))
177 ([], set(['path:.']), [])
180 >>> restrictpatterns({'f1/$non_exitent_var'}, {}, ['f1','f2'], [])
178 >>> restrictpatterns({'f1/$non_exitent_var'}, {}, ['f1','f2'], [])
181 (set(['f1/$non_exitent_var']), {})
179 (set(['f1/$non_exitent_var']), {}, [])
182 """
180 """
183 res_excludes = set(req_excludes)
181 res_excludes = set(req_excludes)
184 res_excludes.update(repo_excludes)
182 res_excludes.update(repo_excludes)
183 invalid_includes = []
185 if not req_includes:
184 if not req_includes:
186 res_includes = set(repo_includes)
185 res_includes = set(repo_includes)
187 elif 'path:.' not in repo_includes:
186 elif 'path:.' not in repo_includes:
@@ -197,7 +196,7 b' def restrictpatterns(req_includes, req_e'
197 valid = True
196 valid = True
198 res_includes.append(req_include)
197 res_includes.append(req_include)
199 break
198 break
200 if not valid and invalid_includes is not None:
199 if not valid:
201 invalid_includes.append(req_include)
200 invalid_includes.append(req_include)
202 if len(res_includes) == 0:
201 if len(res_includes) == 0:
203 res_excludes = {'path:.'}
202 res_excludes = {'path:.'}
@@ -205,4 +204,4 b' def restrictpatterns(req_includes, req_e'
205 res_includes = set(res_includes)
204 res_includes = set(res_includes)
206 else:
205 else:
207 res_includes = set(req_includes)
206 res_includes = set(req_includes)
208 return res_includes, res_excludes
207 return res_includes, res_excludes, invalid_includes
General Comments 0
You need to be logged in to leave comments. Login now