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.
$ "$TESTDIR/hghave" inotify || exit 80
$ hg init
$ touch a b c d e f
$ echo "[extensions]" >> $HGRCPATH
$ echo "inotify=" >> $HGRCPATH
inserve
$ hg inserve -d --pid-file=hg.pid 2>&1
$ cat hg.pid >> "$DAEMON_PIDS"
$ hg ci -Am m
adding a
adding b
adding c
adding d
adding e
adding f
adding hg.pid
let the daemon finish its stuff
$ sleep 1
eed to test all file opperations
$ hg rm a
$ rm b
$ echo c >> c
$ touch g
$ hg add g
$ hg mv e h
$ hg status
M c
A g
A h
R a
R e
! b
$ sleep 1
Are we able to kill the service? if not, the service died on some error
$ kill `cat hg.pid`