@@ -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;
@@ -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);
@@ -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);
}