Mercurial > hg > mercurial-source
changeset 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 | 03e1c2d35c6a |
children | 28085b82f801 |
files | hgext/graphlog.py tests/test-glog.t |
diffstat | 2 files changed, 28 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/graphlog.py +++ b/hgext/graphlog.py @@ -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']:
--- a/tests/test-glog.t +++ b/tests/test-glog.t @@ -1319,12 +1319,13 @@ file(File) + limit + -ra:b, b < tip: $ hg glog -l1 -r32:34 -r 'file("a")' - o changeset: 34:fea3ac5810e0 - | parent: 32:d06dffa21a31 - | user: test - | date: Thu Jan 01 00:00:34 1970 +0000 - | summary: (34) head - | + o changeset: 31:621d83e11f67 + |\ parent: 21:d42a756af44d + | | parent: 30:6e11cd4b648f + | | user: test + | | date: Thu Jan 01 00:00:31 1970 +0000 + | | summary: (31) expand + | | limit(file(File) and a::b), b < tip: @@ -1453,3 +1454,11 @@ $ hg log -G --follow a abort: -G/--graph option is incompatible with --follow with file argument [255] + +Test multiple revision specifications are correctly handled + + $ hg log -G -r 27 -r 25 --branch default --template '{rev}\n' + o 25 + |\ + +---o 27 + | |