localrepo: unconditionally enable general delta with sparse revlogs
This come as an extra security, better safe than sorry.
sparse-revlog: also use sparse-revlog config as a general delta trigger
Sparse revlog rely on general delta, so we should make sure it is used.
fileset: suppress EACCES while reading arbitrary paths via filectx API
On Windows, EACCES is raised in place of EISDIR. This patch simply adds
EACCES to the list of errors to be ignored since I think it's okay for
filesets to treat inaccessible working-copy files as not existing.
merge: do the trivial resolution after updating sparse checkout
In merge, we do trivial resolution for files which were deleted on one side and
changed on other. When sparse extension in involved that file might not be
present in wdir and trivial resolution can lead to file not found error. This
patch make sure we updates the sparse checkout before doing the trivial
resolution.
This fixes the test failure demonstrated in previous patch.
Differential Revision: https://phab.mercurial-scm.org/D3984
sparse: add test showing `hg merge` is broken while using sparse extension
This patch adds a test to demonstrate that `hg merge` is broken in some cases
while using sparse extension.
The case is when you have a file which is:
* modified between current wdir parent and merge base
* deleted between merge base and merge destination
* excluded from sparse checkout
Doing `hg merge` results in file not found error. Next patch will fix this.
Differential Revision: https://phab.mercurial-scm.org/D3983
context: use hex nodeid in error about filtered node
I went a little too far in my cleanup in
9231148ea599 (context:
convert to hex for error message only for 20-byte changeid,
2018-04-06). I missed that the case where a binary nodeid refers to a
filtered node.
Differential Revision: https://phab.mercurial-scm.org/D3987