summaryrefslogtreecommitdiff
path: root/builtin
diff options
context:
space:
mode:
authorDerrick Stolee <dstolee@microsoft.com>2020-02-11 15:02:22 (GMT)
committerJunio C Hamano <gitster@pobox.com>2020-02-11 16:47:13 (GMT)
commit4bf0c06c7169da61de489544207a7659ef31029f (patch)
tree294f4a269f74813fe5102f8ee394f94c8d2267b6 /builtin
parent6fb705abcb6044f07954b486d71c05151262b6b6 (diff)
downloadgit-4bf0c06c7169da61de489544207a7659ef31029f.zip
git-4bf0c06c7169da61de489544207a7659ef31029f.tar.gz
git-4bf0c06c7169da61de489544207a7659ef31029f.tar.bz2
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')
-rw-r--r--builtin/sparse-checkout.c44
1 files changed, 26 insertions, 18 deletions
diff --git a/builtin/sparse-checkout.c b/builtin/sparse-checkout.c
index 41d8aaf..03915dd 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;