Heavier usage of sparse-checkouts at $DAYJOB is commencing. And an issue with git stash apply was found. git stash's implementation as a pipeline of forked commands presents some problems, especially when implemented atop of three commands that all behave differently in the presence of sparse checkouts. Add a testcase demonstrating some issues with git stash apply in a repository with a different set of sparse-checkout patterns at apply vs create time, clean up the relevant section of git stash code, and incidentally fix a submodule testcase unrelated to sparse checkouts. Provide some detailed commit messages explaining the issues along the way. NOTE: I found a couple minor issues with other commands in sparse checkouts while debugging this issue, but I don't yet have fixes for them and I can submit them separately. Elijah Newren (3): t7012: add a testcase demonstrating stash apply bugs in sparse checkouts stash: remove unnecessary process forking stash: fix stash application in sparse-checkouts builtin/stash.c | 130 +++++++++++++++++++++---------- t/lib-submodule-update.sh | 16 ++-- t/t7012-skip-worktree-writing.sh | 88 +++++++++++++++++++++ 3 files changed, 184 insertions(+), 50 deletions(-) base-commit: faefdd61ec7c7f6f3c8c9907891465ac9a2a1475 Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-919%2Fnewren%2Fsparse-checkout-fixups-v1 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-919/newren/sparse-checkout-fixups-v1 Pull-Request: https://github.com/git/git/pull/919 -- gitgitgadget