Mercurial > hg
diff hgext/graphlog.py @ 14132:7d3bd0640262
graphlog: take the union of --rev specs instead of the intersection
author | Patrick Mezard <pmezard@gmail.com> |
---|---|
date | Sun, 01 May 2011 15:51:48 +0200 |
parents | 5e4ec4119485 |
children | 28085b82f801 |
line wrap: on
line diff
--- a/hgext/graphlog.py Sun May 01 15:51:46 2011 +0200 +++ b/hgext/graphlog.py Sun May 01 15:51:48 2011 +0200 @@ -257,6 +257,7 @@ 'prune': (2, 'not ($ or ancestors($))'), 'user': (2, 'user($)'), } + optrevset = [] revset = [] for op, val in opts.iteritems(): if not val: @@ -269,17 +270,24 @@ arity, revop = opt2revset[op] revop = revop.replace('$', '%(val)r') if arity == 0: - revset.append(revop) + optrevset.append(revop) elif arity == 1: - revset.append(revop % {'val': val}) + optrevset.append(revop % {'val': val}) else: for f in val: - revset.append(revop % {'val': f}) + optrevset.append(revop % {'val': f}) for path in pats: - revset.append('file(%r)' % path) + optrevset.append('file(%r)' % path) - revset = ' and '.join(revset) or 'all()' + if revset or optrevset: + if revset: + revset = ['(' + ' or '.join(revset) + ')'] + if optrevset: + revset.append('(' + ' and '.join(optrevset) + ')') + revset = ' and '.join(revset) + else: + revset = 'all()' # we want reverted revset to build graph revset = 'reverse(%s)' % revset if opts['limit']: