Files
git/builtin
Victoria Dye ab81047a6c read-tree: make two-way merge sparse-aware
Enable two-way merge with 'git read-tree' without expanding the sparse
index. When in a sparse index, a two-way merge will trivially succeed as
long as there are not changes to the same sparse directory in multiple trees
(i.e., sparse directory-level "edit-edit" conflicts). If there are such
conflicts, the merge will fail despite the possibility that individual files
could merge cleanly.

In order to resolve these "edit-edit" conflicts, "conflicted" sparse
directories are - rather than rejected - merged by traversing their
associated trees by OID. For each child of the sparse directory:

1. Files are merged as normal (see Documentation/git-read-tree.txt for
   details).
2. Subdirectories are treated as sparse directories and merged in
   'twoway_merge'. If there are no conflicts, they are merged according to
   the rules in Documentation/git-read-tree.txt; otherwise, the subdirectory
   is recursively traversed and merged.

This process allows sparse directories to be individually merged at the
necessary depth *without* expanding a full index.

The 't/t1092-sparse-checkout-compatibility.sh' test 'read-tree --merge with
edit/edit conflicts in sparse directories' tests two-way merges with 1)
changes inside sparse directories that do not conflict and 2) changes that
do conflict (with the correct file(s) reported in the error message).
Additionally, add two-way merge cases to 'sparse index is not expanded:
read-tree' to confirm that the index is not expanded regardless of whether
edit/edit conflicts are present in a sparse directory.

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