This reverts #658 and essentially reopens microsoft/vfsforgit#1812. Resolves #673.
The issue is that by overriding the ignore_skip_wortree value (normally set by --ignore-skip-worktree) we then force Git to hydrate the entire working directory in a git restore .. This leads to some interesting trade-offs:
Users on v2.45.2.vfs.0.2 (where git restore . overhydrates), they can use git reset --hard as a better representation of this behavior.
Users on any Git version can use git restore --ignore-skip-worktree -- <pathspec> when using a smaller-scale pathspec that corresponds to files they care about and probably have hydrated.
I will include these workarounds in the VFS for Git issue.
To get to a real solution here, we would somehow need to turn the ignore_skip_worktree bit into two bits:
a. A bit to say "update index entries that have SKIP_WORKTREE set".
b. A bit to say "update the working directory even if SKIP_WORKTREE is set".
And perhaps this "working directory" version is what was intended when adding the --ignore-skip-worktree option, but it's more involved and has upstream implications to make changes here.
This reverts #658 and essentially reopens microsoft/vfsforgit#1812. Resolves #673.
The issue is that by overriding the
ignore_skip_wortree
value (normally set by--ignore-skip-worktree
) we then force Git to hydrate the entire working directory in agit restore .
. This leads to some interesting trade-offs:git restore .
overhydrates), they can usegit reset --hard
as a better representation of this behavior.git restore --ignore-skip-worktree -- <pathspec>
when using a smaller-scale pathspec that corresponds to files they care about and probably have hydrated.I will include these workarounds in the VFS for Git issue.
To get to a real solution here, we would somehow need to turn the
ignore_skip_worktree
bit into two bits:a. A bit to say "update index entries that have
SKIP_WORKTREE
set". b. A bit to say "update the working directory even ifSKIP_WORKTREE
is set".And perhaps this "working directory" version is what was intended when adding the
--ignore-skip-worktree
option, but it's more involved and has upstream implications to make changes here.