revision: introduce struct to handle exclusions
The functions that handle exclusion of refs work on a single string list. We're about to add a second mechanism for excluding refs though, and it makes sense to reuse much of the same architecture for both kinds of exclusion. Introduce a new `struct ref_exclusions` that encapsulates all the logic related to excluding refs and move the `struct string_list` that holds all wildmatch patterns of excluded refs into it. Rename functions that operate on this struct to match its name. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Taylor Blau <me@ttaylorr.com>
This commit is contained in:

committed by
Taylor Blau

parent
05b9425960
commit
1e9f273ac0
@ -39,7 +39,7 @@ static int abbrev_ref_strict;
|
||||
static int output_sq;
|
||||
|
||||
static int stuck_long;
|
||||
static struct string_list *ref_excludes;
|
||||
static struct ref_exclusions ref_excludes = REF_EXCLUSIONS_INIT;
|
||||
|
||||
/*
|
||||
* Some arguments are relevant "revision" arguments,
|
||||
@ -198,7 +198,7 @@ static int show_default(void)
|
||||
static int show_reference(const char *refname, const struct object_id *oid,
|
||||
int flag UNUSED, void *cb_data UNUSED)
|
||||
{
|
||||
if (ref_excluded(ref_excludes, refname))
|
||||
if (ref_excluded(&ref_excludes, refname))
|
||||
return 0;
|
||||
show_rev(NORMAL, oid, refname);
|
||||
return 0;
|
||||
@ -585,7 +585,7 @@ static void handle_ref_opt(const char *pattern, const char *prefix)
|
||||
for_each_glob_ref_in(show_reference, pattern, prefix, NULL);
|
||||
else
|
||||
for_each_ref_in(prefix, show_reference, NULL);
|
||||
clear_ref_exclusion(&ref_excludes);
|
||||
clear_ref_exclusions(&ref_excludes);
|
||||
}
|
||||
|
||||
enum format_type {
|
||||
@ -863,7 +863,7 @@ int cmd_rev_parse(int argc, const char **argv, const char *prefix)
|
||||
}
|
||||
if (!strcmp(arg, "--all")) {
|
||||
for_each_ref(show_reference, NULL);
|
||||
clear_ref_exclusion(&ref_excludes);
|
||||
clear_ref_exclusions(&ref_excludes);
|
||||
continue;
|
||||
}
|
||||
if (skip_prefix(arg, "--disambiguate=", &arg)) {
|
||||
|
Reference in New Issue
Block a user