mirror of
https://github.com/git/git.git
synced 2026-01-09 09:36:36 +00:00
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
27
revision.h
27
revision.h
@@ -81,6 +81,21 @@ struct rev_cmdline_info {
|
||||
} *rev;
|
||||
};
|
||||
|
||||
struct ref_exclusions {
|
||||
/*
|
||||
* Excluded refs is a list of wildmatch patterns. If any of the
|
||||
* patterns matches, the reference will be excluded.
|
||||
*/
|
||||
struct string_list excluded_refs;
|
||||
};
|
||||
|
||||
/**
|
||||
* Initialize a `struct ref_exclusions` with a macro.
|
||||
*/
|
||||
#define REF_EXCLUSIONS_INIT { \
|
||||
.excluded_refs = STRING_LIST_INIT_DUP, \
|
||||
}
|
||||
|
||||
struct oidset;
|
||||
struct topo_walk_info;
|
||||
|
||||
@@ -103,7 +118,7 @@ struct rev_info {
|
||||
struct list_objects_filter_options filter;
|
||||
|
||||
/* excluding from --branches, --refs, etc. expansion */
|
||||
struct string_list *ref_excludes;
|
||||
struct ref_exclusions ref_excludes;
|
||||
|
||||
/* Basic information */
|
||||
const char *prefix;
|
||||
@@ -439,12 +454,12 @@ void mark_trees_uninteresting_sparse(struct repository *r, struct oidset *trees)
|
||||
void show_object_with_name(FILE *, struct object *, const char *);
|
||||
|
||||
/**
|
||||
* Helpers to check if a "struct string_list" item matches with
|
||||
* wildmatch().
|
||||
* Helpers to check if a reference should be excluded.
|
||||
*/
|
||||
int ref_excluded(struct string_list *, const char *path);
|
||||
void clear_ref_exclusion(struct string_list **);
|
||||
void add_ref_exclusion(struct string_list **, const char *exclude);
|
||||
int ref_excluded(const struct ref_exclusions *exclusions, const char *path);
|
||||
void init_ref_exclusions(struct ref_exclusions *);
|
||||
void clear_ref_exclusions(struct ref_exclusions *);
|
||||
void add_ref_exclusion(struct ref_exclusions *, const char *exclude);
|
||||
|
||||
/**
|
||||
* This function can be used if you want to add commit objects as revision
|
||||
|
||||
Reference in New Issue
Block a user