merge-recursive used to update files in the working tree unnecessarily. This was reported by Linus in the 2.18.0 cycle and fixed in commit 1de70dbd1 ("merge-recursive: fix check for skipability of working tree updates", 2018-04-19). Unfortunately, this bug masked another one: that merge-recursive cleared the skip_worktree bit for any files marked as unmerged by unpack_trees(), even if a file-level merge was clean. This series fixes the clearing of the skip_worktree bit for files that merge cleanly and match HEAD. A future possible improvement exists to also avoid clearing the skip_worktree bit for files that merge cleanly but do not match HEAD (for such cases we'd still want to write those files to the index, but stop updating them in the working tree). This series applies cleanly to either maint or master (or next or pu). Two important notes: - Need a sign-off from Ben for the first patch - I'm out on vacation next week, so I won't be able to respond to feedback or handle any necessary re-rolls until I return. Ben Peart (1): t3507: add a testcase showing failure with sparse checkout Elijah Newren (1): merge-recursive: preserve skip_worktree bit when necessary merge-recursive.c | 16 ++++++++++++++++ t/t3507-cherry-pick-conflict.sh | 13 +++++++++++++ 2 files changed, 29 insertions(+) -- 2.18.0.234.g2d1e6cefb