narrow: move remaining narrow-limited dirstate walks to core
In most places we now filter at a higher level (the context object),
but there are few places that relied on the dirstate walk to be
filtered by the narrowspec. The important cases are those used by `hg
add` and `hg addremove`. This patch updates them to pass in a matcher
instead of relying on the dirstate to do the filtering. The dirstate
filtering is also dropped in narrowdirstate.py.
Not always filtering in the dirstate should be useful for a future `hg
status --include-outside-narrow` option.
These places now end up doing an unrestricted dirstate walk after this
patch:
* debugfileset
* perfwalk
* sparse (but restricted to sparse config)
* largefiles
I'll let anyone who cares about these cases adapt them to work with
narrow if necessary.
Differential Revision: https://phab.mercurial-scm.org/D4901
Minimal hgk check
$ echo "[extensions]" >> $HGRCPATH
$ echo "hgk=" >> $HGRCPATH
$ hg init repo
$ cd repo
$ echo a > a
$ hg ci -Am adda
adding a
$ hg debug-cat-file commit 0
tree a0c8bcbbb45c
parent 000000000000
author test 0 0
revision 0
branch default
phase draft
adda
$ echo b > b
$ hg ci -Am addb
adding b
$ hg log -T '{node}\n'
102a90ea7b4a3361e4082ed620918c261189a36a
07f4944404050f47db2e5c5071e0e84e7a27bba9
$ hg debug-diff-tree 07f494440405 102a90ea7b4a
:000000 100664 000000000000 1e88685f5dde N b b
$ hg debug-diff-tree 07f494440405 102a90ea7b4a --patch
diff --git a/b b/b
new file mode 100644
--- /dev/null
+++ b/b
@@ -0,0 +1,1 @@
+b
Ensure that diff-tree output isn't affected by diffopts
$ hg --config diff.noprefix=True debug-diff-tree 07f494440405 102a90ea7b4a
:000000 100664 000000000000 1e88685f5dde N b b
$ hg --config diff.noprefix=True debug-diff-tree --patch 07f494440405 102a90ea7b4a
diff --git a/b b/b
new file mode 100644
--- /dev/null
+++ b/b
@@ -0,0 +1,1 @@
+b
$ cd ..