Mercurial > public > mercurial-scm > hg
diff tests/test-glog.t @ 16161:5a627b49b4d9
graphlog: paths/-I/-X handling requires a new revset
The filtering logic of match objects cannot be reproduced with the existing
revsets as it operates at changeset files level. A changeset touching "a" and
"b" is matched by "-I a -X b" but not by "file(a) and not file(b)".
To solve this, a new internal "_matchfiles(...)" revset is introduced. It works
like "file(x)" but accepts more than one argument and its arguments are
prefixed with "p:", "i:" and "x:" to be used as patterns, include patterns or
exclude patterns respectively.
The _matchfiles revset is kept private for now:
- There are probably smarter ways to pass the arguments in a user-friendly way
- A "rev:" argument is likely appear at some point to emulate log command
behaviour with regard to filesets: they are evaluated for the parent revision
and applied everywhere instead of being reevaluated for each revision.
author | Patrick Mezard <patrick@mezard.eu> |
---|---|
date | Thu, 23 Feb 2012 18:05:20 +0100 |
parents | 1bfc7ba8b404 |
children | ef2373ea3d24 |
line wrap: on
line diff
--- a/tests/test-glog.t Thu Feb 23 17:55:07 2012 +0100 +++ b/tests/test-glog.t Thu Feb 23 18:05:20 2012 +0100 @@ -1437,7 +1437,6 @@ ('group', ('group', ('or', ('or', ('func', ('symbol', 'branch'), ('string', 'default')), ('func', ('symbol', 'branch'), ('string', 'branch'))), ('func', ('symbol', 'branch'), ('string', 'branch'))))) $ testlog -k expand -k merge ('group', ('group', ('or', ('func', ('symbol', 'keyword'), ('string', 'expand')), ('func', ('symbol', 'keyword'), ('string', 'merge'))))) - $ hg log -G --include 'some file' --exclude 'another file' $ hg log -G --follow --template 'nodetag {rev}\n' | grep nodetag | wc -l \s*36 (re) $ hg log -G --removed --template 'nodetag {rev}\n' | grep nodetag | wc -l @@ -1527,4 +1526,9 @@ Test falling back to slow path for non-existing files $ testlog a c - ('group', ('group', ('or', ('func', ('symbol', 'file'), ('string', 'a')), ('func', ('symbol', 'file'), ('string', 'c'))))) + ('group', ('group', ('func', ('symbol', '_matchfiles'), ('list', ('string', 'p:a'), ('string', 'p:c'))))) + +Test multiple --include/--exclude/paths + + $ testlog --include a --include e --exclude b --exclude e a e + ('group', ('group', ('func', ('symbol', '_matchfiles'), ('list', ('list', ('list', ('list', ('list', ('string', 'p:a'), ('string', 'p:e')), ('string', 'i:a')), ('string', 'i:e')), ('string', 'x:b')), ('string', 'x:e')))))