diff options
author | Derrick Stolee <dstolee@microsoft.com> | 2021-01-23 20:58:17 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2021-01-24 02:14:07 +0100 |
commit | dd23022acbf7433514e20a14a9f74e39fec9d340 (patch) | |
tree | 1dbf1ea1225bf65c85d7a4d1664adb3012415ba1 /dir.c | |
parent | name-hash: use trace2 regions for init (diff) | |
download | git-dd23022acbf7433514e20a14a9f74e39fec9d340.tar.xz git-dd23022acbf7433514e20a14a9f74e39fec9d340.zip |
sparse-checkout: load sparse-checkout patterns
A future feature will want to load the sparse-checkout patterns into a
pattern_list, but the current mechanism to do so is a bit complicated.
This is made difficult due to needing to find the sparse-checkout file
in different ways throughout the codebase.
The logic implemented in the new get_sparse_checkout_patterns() was
duplicated in populate_from_existing_patterns() in unpack-trees.c. Use
the new method instead, keeping the logic around handling the struct
unpack_trees_options.
The callers to get_sparse_checkout_filename() in
builtin/sparse-checkout.c manipulate the sparse-checkout file directly,
so it is not appropriate to replace logic in that file with
get_sparse_checkout_patterns().
Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'dir.c')
-rw-r--r-- | dir.c | 17 |
1 files changed, 17 insertions, 0 deletions
@@ -2998,6 +2998,23 @@ void setup_standard_excludes(struct dir_struct *dir) } } +char *get_sparse_checkout_filename(void) +{ + return git_pathdup("info/sparse-checkout"); +} + +int get_sparse_checkout_patterns(struct pattern_list *pl) +{ + int res; + char *sparse_filename = get_sparse_checkout_filename(); + + pl->use_cone_patterns = core_sparse_checkout_cone; + res = add_patterns_from_file_to_list(sparse_filename, "", 0, pl, NULL); + + free(sparse_filename); + return res; +} + int remove_path(const char *name) { char *slash; |