Message ID | 255318f4dc61daef3e892a4dd5c571463985f340.1659645967.git.gitgitgadget@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | reset/checkout: fix miscellaneous sparse index bugs | expand |
On 8/4/2022 4:46 PM, Victoria Dye via GitGitGadget wrote: > From: Victoria Dye <vdye@github.com> > > Add the 'recursive' diff flag to the local changes reporting done by 'git > checkout' in 'show_local_changes()'. Without the flag enabled, unexpanded > sparse directories will not be recursed into to report the diff of each > file's contents, resulting in the reported local changes including > "modified" sparse directories. Nice find! > + rev.diffopt.flags.recursive = 1; Simple fix. > +test_expect_success 'checkout with modified sparse directory' ' > + init_repos && > + > + test_all_match git checkout rename-in-to-out -- . && > + test_sparse_match git sparse-checkout reapply && > + test_all_match git checkout base > +' Simple test. Excellent. -Stolee
diff --git a/builtin/checkout.c b/builtin/checkout.c index 29c74f898bf..f9d63d80b92 100644 --- a/builtin/checkout.c +++ b/builtin/checkout.c @@ -626,6 +626,7 @@ static void show_local_changes(struct object *head, repo_init_revisions(the_repository, &rev, NULL); rev.diffopt.flags = opts->flags; rev.diffopt.output_format |= DIFF_FORMAT_NAME_STATUS; + rev.diffopt.flags.recursive = 1; diff_setup_done(&rev.diffopt); add_pending_object(&rev, head, NULL); run_diff_index(&rev, 0); diff --git a/t/t1092-sparse-checkout-compatibility.sh b/t/t1092-sparse-checkout-compatibility.sh index 763c6cc6846..99a1425a929 100755 --- a/t/t1092-sparse-checkout-compatibility.sh +++ b/t/t1092-sparse-checkout-compatibility.sh @@ -372,6 +372,14 @@ test_expect_success 'deep changes during checkout' ' test_all_match git checkout base ' +test_expect_success 'checkout with modified sparse directory' ' + init_repos && + + test_all_match git checkout rename-in-to-out -- . && + test_sparse_match git sparse-checkout reapply && + test_all_match git checkout base +' + test_expect_success 'add outside sparse cone' ' init_repos &&