read-tree: make three-way merge sparse-aware

Enable use of 'merged_sparse_dir' in 'threeway_merge'. As with two-way
merge, the contents of each conflicted sparse directory are merged without
referencing the index, avoiding sparse index expansion.

As with two-way merge, the 't/t1092-sparse-checkout-compatibility.sh' test
'read-tree --merge with edit/edit conflicts in sparse directories' confirms
that three-way merges with edit/edit changes (both with and without
conflicts) inside a sparse directory result in the correct index state or
error message. To ensure the index is not unnecessarily expanded, add
three-way merge cases to 'sparse index is not expanded: read-tree'.

Signed-off-by: Victoria Dye <vdye@github.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Victoria Dye
2022-03-01 20:24:31 +00:00
committed by Junio C Hamano
parent ab81047a6c
commit f27c170f64
3 changed files with 29 additions and 14 deletions

View File

@ -234,11 +234,6 @@ int cmd_read_tree(int argc, const char **argv, const char *cmd_prefix)
break;
case 3:
default:
/*
* TODO: update threeway_merge to handle edit/edit conflicts in
* sparse directories.
*/
ensure_full_index(&the_index);
opts.fn = threeway_merge;
break;
}