diff options
author | Derrick Stolee <dstolee@microsoft.com> | 2020-02-11 18:02:22 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2020-02-11 19:47:13 +0300 |
commit | 4bf0c06c7169da61de489544207a7659ef31029f (patch) | |
tree | 294f4a269f74813fe5102f8ee394f94c8d2267b6 /builtin/sparse-checkout.c | |
parent | 6fb705abcb6044f07954b486d71c05151262b6b6 (diff) |
sparse-checkout: extract pattern update from 'set' subcommand
In anticipation of adding "add" and "remove" subcommands to the
sparse-checkout builtin, extract a modify_pattern_list() method from the
sparse_checkout_set() method. This command will read input from the
command-line or stdin to construct a set of patterns, then modify the
existing sparse-checkout patterns after a successful update of the
working directory.
Currently, the only way to modify the patterns is to replace all of the
patterns. This will be extended in a later update.
Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/sparse-checkout.c')
-rw-r--r-- | builtin/sparse-checkout.c | 44 |
1 files changed, 26 insertions, 18 deletions
diff --git a/builtin/sparse-checkout.c b/builtin/sparse-checkout.c index 41d8aaf9a2..03915dd729 100644 --- a/builtin/sparse-checkout.c +++ b/builtin/sparse-checkout.c @@ -462,29 +462,17 @@ static void add_patterns_from_input(struct pattern_list *pl, } } -static int sparse_checkout_set(int argc, const char **argv, const char *prefix) +enum modify_type { + REPLACE, +}; + +static int modify_pattern_list(int argc, const char **argv, enum modify_type m) { - struct pattern_list pl; int result; int changed_config = 0; - - static struct option builtin_sparse_checkout_set_options[] = { - OPT_BOOL(0, "stdin", &set_opts.use_stdin, - N_("read patterns from standard in")), - OPT_END(), - }; - - repo_read_index(the_repository); - require_clean_work_tree(the_repository, - N_("set sparse-checkout patterns"), NULL, 1, 0); - + struct pattern_list pl; memset(&pl, 0, sizeof(pl)); - argc = parse_options(argc, argv, prefix, - builtin_sparse_checkout_set_options, - builtin_sparse_checkout_set_usage, - PARSE_OPT_KEEP_UNKNOWN); - add_patterns_from_input(&pl, argc, argv); if (!core_apply_sparse_checkout) { @@ -502,6 +490,26 @@ static int sparse_checkout_set(int argc, const char **argv, const char *prefix) return result; } +static int sparse_checkout_set(int argc, const char **argv, const char *prefix) +{ + static struct option builtin_sparse_checkout_set_options[] = { + OPT_BOOL(0, "stdin", &set_opts.use_stdin, + N_("read patterns from standard in")), + OPT_END(), + }; + + repo_read_index(the_repository); + require_clean_work_tree(the_repository, + N_("set sparse-checkout patterns"), NULL, 1, 0); + + argc = parse_options(argc, argv, prefix, + builtin_sparse_checkout_set_options, + builtin_sparse_checkout_set_usage, + PARSE_OPT_KEEP_UNKNOWN); + + return modify_pattern_list(argc, argv, REPLACE); +} + static int sparse_checkout_disable(int argc, const char **argv) { struct pattern_list pl; |