comparison hgext/graphlog.py @ 16159:ec33539b61f6

graphlog: paths arguments must be or'ed
author Patrick Mezard <patrick@mezard.eu>
date Thu, 23 Feb 2012 17:54:42 +0100
parents e04cc21b01b2
children 1bfc7ba8b404
comparison
equal deleted inserted replaced
16158:e04cc21b01b2 16159:ec33539b61f6
255 'removed': ('removes("*")', None), 255 'removed': ('removes("*")', None),
256 'date': ('date(%(val)r)', None), 256 'date': ('date(%(val)r)', None),
257 'branch': ('branch(%(val)r)', ' or '), 257 'branch': ('branch(%(val)r)', ' or '),
258 'exclude': ('not file(%(val)r)', ' and '), 258 'exclude': ('not file(%(val)r)', ' and '),
259 'include': ('file(%(val)r)', ' and '), 259 'include': ('file(%(val)r)', ' and '),
260 '_pats': ('file(%(val)r)', ' or '),
260 'keyword': ('keyword(%(val)r)', ' or '), 261 'keyword': ('keyword(%(val)r)', ' or '),
261 'prune': ('not (%(val)r or ancestors(%(val)r))', ' and '), 262 'prune': ('not (%(val)r or ancestors(%(val)r))', ' and '),
262 'user': ('user(%(val)r)', ' or '), 263 'user': ('user(%(val)r)', ' or '),
263 'rev': ('%(val)s', ' or '), 264 'rev': ('%(val)s', ' or '),
264 } 265 }
265 266
267 opts = dict(opts)
266 # branch and only_branch are really aliases and must be handled at 268 # branch and only_branch are really aliases and must be handled at
267 # the same time 269 # the same time
268 if 'branch' in opts and 'only_branch' in opts: 270 if 'branch' in opts and 'only_branch' in opts:
269 opts = dict(opts)
270 opts['branch'] = opts['branch'] + opts.pop('only_branch') 271 opts['branch'] = opts['branch'] + opts.pop('only_branch')
272 opts['_pats'] = list(pats)
271 273
272 revset = [] 274 revset = []
273 for op, val in opts.iteritems(): 275 for op, val in opts.iteritems():
274 if not val: 276 if not val:
275 continue 277 continue
283 expr = revop % {'val': val} 285 expr = revop % {'val': val}
284 else: 286 else:
285 expr = '(' + andor.join((revop % {'val': v}) for v in val) + ')' 287 expr = '(' + andor.join((revop % {'val': v}) for v in val) + ')'
286 revset.append(expr) 288 revset.append(expr)
287 289
288 for path in pats:
289 revset.append('file(%r)' % path)
290
291 if revset: 290 if revset:
292 revset = '(' + ' and '.join(revset) + ')' 291 revset = '(' + ' and '.join(revset) + ')'
293 else: 292 else:
294 revset = 'all()' 293 revset = 'all()'
295 return revset 294 return revset