hgext/graphlog.py
changeset 16159 ec33539b61f6
parent 16158 e04cc21b01b2
child 16160 1bfc7ba8b404
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