# HG changeset patch # User Patrick Mezard # Date 1304185320 -7200 # Node ID 2285e5c97f72fd33c2e65333cb89edbe70d96bd2 # Parent 2520ebfd9f5c9215703e1c870c56556fde02bdcb graphlog: fix log -G --prune follow() revset really means '::.' while we want something based on the passed argument. Also, ancestors() revset does not include the parent revisions. diff -r 2520ebfd9f5c -r 2285e5c97f72 hgext/graphlog.py --- a/hgext/graphlog.py Sat Apr 30 19:42:00 2011 +0200 +++ b/hgext/graphlog.py Sat Apr 30 19:42:00 2011 +0200 @@ -224,13 +224,18 @@ """Return revset str built of revisions, log options and file patterns. """ opt2revset = dict(only_merges='merge()', - only_branch='branch', + only_branch='branch($)', no_merges='not merge()', - include='file', - exclude='not file', - prune='not follow', + include='file($)', + exclude='not file($)', + prune='not ($ or ancestors($))', + user='user($)', + branch='branch($)', + keyword='keyword($)', follow='follow()', removed='removes("*")') + opt2revset = dict((k, v.replace('$', '%(val)r')) + for k,v in opt2revset.iteritems()) revset = [] for op, val in opts.iteritems(): if not val: @@ -243,7 +248,7 @@ elif op in ('include', 'exclude', 'user', 'branch', 'keyword', 'prune', 'only_branch'): for f in val: - revset.append('%s(%r)' % (revop, f)) + revset.append(revop % {'val': f}) elif op == 'rev': revset.extend(val) diff -r 2520ebfd9f5c -r 2285e5c97f72 tests/test-glog.t --- a/tests/test-glog.t Sat Apr 30 19:42:00 2011 +0200 +++ b/tests/test-glog.t Sat Apr 30 19:42:00 2011 +0200 @@ -1416,3 +1416,12 @@ $ hg log -G -d 'brace ) in a date' abort: invalid date: 'brace ) in a date' [255] + $ hg log -G -P 32 --template '{rev}\n' + @ 36 + | + o 35 + | + o 34 + | + | o 33 + | |