Files
git/builtin
Victoria Dye 874cf2a604 stash: apply stash using 'merge_ort_nonrecursive()'
Update 'stash' to use 'merge_ort_nonrecursive()' to apply a stash to the
current working tree. When 'git stash apply' was converted from its shell
script implementation to a builtin in 8a0fc8d19d (stash: convert apply to
builtin, 2019-02-25), 'merge_recursive_generic()' was used to merge a stash
into the working tree as part of 'git stash (apply|pop)'. However, with the
single merge base used in 'do_apply_stash()', the commit wrapping done by
'merge_recursive_generic()' is not only unnecessary, but misleading (the
*real* merge base is labeled "constructed merge base"). Therefore, a
non-recursive merge of the working tree, stashed tree, and stash base tree
is more appropriate.

There are two options for a non-recursive merge-then-update-worktree
function: 'merge_trees()' and 'merge_ort_nonrecursive()'. Use
'merge_ort_nonrecursive()' to align with the default merge strategy used by
'git merge' (6a5fb96672 (Change default merge backend from recursive to ort,
2021-08-04)) and, because merge-ort does not operate in-place on the index,
avoid unnecessary index expansion. Update tests in 't1092' verifying index
expansion for 'git stash' accordingly.

Signed-off-by: Victoria Dye <vdye@github.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2022-05-10 16:45:12 -07:00
..
2022-01-27 18:00:15 -08:00
2022-02-25 15:47:36 -08:00
2022-02-25 15:47:35 -08:00
2022-02-17 16:25:05 -08:00
2022-03-21 15:14:24 -07:00
2021-10-28 09:57:09 -07:00
2021-02-25 16:43:30 -08:00
2022-04-04 10:56:23 -07:00
2022-04-04 10:56:23 -07:00
2022-03-13 22:23:16 +00:00
2022-03-09 13:38:24 -08:00
2022-02-25 15:47:36 -08:00
2022-04-06 15:21:59 -07:00
2021-04-14 13:47:21 -07:00
2021-09-28 10:31:02 -07:00
2022-01-03 16:24:15 -08:00
2022-02-25 15:47:35 -08:00
2022-03-28 15:45:46 -07:00
2022-03-21 15:14:24 -07:00
2022-01-10 11:52:56 -08:00
2021-11-03 13:25:36 -07:00