--- 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']:
--- a/tests/test-glog.t Sun May 01 15:51:46 2011 +0200
+++ b/tests/test-glog.t Sun May 01 15:51:48 2011 +0200
@@ -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
+ | |