From: Derrick Stolee <dstolee@xxxxxxxxxxxxx> There is no need to have two ways to load the sparse-checkout patterns, especially duplicating the info/sparse-checkout filename. Move this code out of unpack-trees.c and into sparse-checkout.c. Signed-off-by: Derrick Stolee <dstolee@xxxxxxxxxxxxx> --- sparse-checkout.c | 12 ++++++++++++ sparse-checkout.h | 1 + unpack-trees.c | 7 ++----- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/sparse-checkout.c b/sparse-checkout.c index 5ada307b42c..875b620568d 100644 --- a/sparse-checkout.c +++ b/sparse-checkout.c @@ -33,6 +33,18 @@ void write_patterns_to_file(FILE *fp, struct pattern_list *pl) } } +int populate_sparse_checkout_patterns(struct pattern_list *pl) +{ + int result; + char *sparse = get_sparse_checkout_filename(); + + pl->use_cone_patterns = core_sparse_checkout_cone; + result = add_patterns_from_file_to_list(sparse, "", 0, pl, NULL); + free(sparse); + + return result; +} + int update_working_directory(struct pattern_list *pl) { enum update_sparsity_result result; diff --git a/sparse-checkout.h b/sparse-checkout.h index 4148832760d..e0c840f07f9 100644 --- a/sparse-checkout.h +++ b/sparse-checkout.h @@ -7,6 +7,7 @@ struct pattern_list; char *get_sparse_checkout_filename(void); +int populate_sparse_checkout_patterns(struct pattern_list *pl); void write_patterns_to_file(FILE *fp, struct pattern_list *pl); int update_working_directory(struct pattern_list *pl); int write_patterns_and_update(struct pattern_list *pl); diff --git a/unpack-trees.c b/unpack-trees.c index 4f880f2da90..6f9bdeb57a0 100644 --- a/unpack-trees.c +++ b/unpack-trees.c @@ -16,6 +16,7 @@ #include "fsmonitor.h" #include "object-store.h" #include "promisor-remote.h" +#include "sparse-checkout.h" /* * Error messages expected by scripts out of plumbing commands such as @@ -1550,14 +1551,10 @@ static void mark_new_skip_worktree(struct pattern_list *pl, static void populate_from_existing_patterns(struct unpack_trees_options *o, struct pattern_list *pl) { - char *sparse = git_pathdup("info/sparse-checkout"); - - pl->use_cone_patterns = core_sparse_checkout_cone; - if (add_patterns_from_file_to_list(sparse, "", 0, pl, NULL) < 0) + if (populate_sparse_checkout_patterns(pl) < 0) o->skip_sparse_checkout = 1; else o->pl = pl; - free(sparse); } -- gitgitgadget