mirror of
https://github.com/git/git.git
synced 2026-02-28 18:48:50 +00:00
refs: replace refs_for_each_glob_ref_in()
Replace calls to `refs_for_each_glob_ref_in()` with the newly introduced `refs_for_each_ref_ext()` function. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
5ef6d593f1
commit
4091d29893
@@ -422,13 +422,17 @@ static void bisect_status(struct bisect_state *state,
|
||||
{
|
||||
char *bad_ref = xstrfmt("refs/bisect/%s", terms->term_bad);
|
||||
char *good_glob = xstrfmt("%s-*", terms->term_good);
|
||||
struct refs_for_each_ref_options opts = {
|
||||
.pattern = good_glob,
|
||||
.prefix = "refs/bisect/",
|
||||
.trim_prefix = strlen("refs/bisect/"),
|
||||
};
|
||||
|
||||
if (refs_ref_exists(get_main_ref_store(the_repository), bad_ref))
|
||||
state->nr_bad = 1;
|
||||
|
||||
refs_for_each_glob_ref_in(get_main_ref_store(the_repository), inc_nr,
|
||||
good_glob, "refs/bisect/",
|
||||
(void *) &state->nr_good);
|
||||
refs_for_each_ref_ext(get_main_ref_store(the_repository),
|
||||
inc_nr, &state->nr_good, &opts);
|
||||
|
||||
free(good_glob);
|
||||
free(bad_ref);
|
||||
@@ -562,6 +566,10 @@ static int add_bisect_ref(const struct reference *ref, void *cb)
|
||||
|
||||
static int prepare_revs(struct bisect_terms *terms, struct rev_info *revs)
|
||||
{
|
||||
struct refs_for_each_ref_options opts = {
|
||||
.prefix = "refs/bisect/",
|
||||
.trim_prefix = strlen("refs/bisect/"),
|
||||
};
|
||||
int res = 0;
|
||||
struct add_bisect_ref_data cb = { revs };
|
||||
char *good = xstrfmt("%s-*", terms->term_good);
|
||||
@@ -581,11 +589,16 @@ static int prepare_revs(struct bisect_terms *terms, struct rev_info *revs)
|
||||
reset_revision_walk();
|
||||
repo_init_revisions(the_repository, revs, NULL);
|
||||
setup_revisions(0, NULL, revs, NULL);
|
||||
refs_for_each_glob_ref_in(get_main_ref_store(the_repository),
|
||||
add_bisect_ref, bad, "refs/bisect/", &cb);
|
||||
|
||||
opts.pattern = bad;
|
||||
refs_for_each_ref_ext(get_main_ref_store(the_repository),
|
||||
add_bisect_ref, &cb, &opts);
|
||||
|
||||
cb.object_flags = UNINTERESTING;
|
||||
refs_for_each_glob_ref_in(get_main_ref_store(the_repository),
|
||||
add_bisect_ref, good, "refs/bisect/", &cb);
|
||||
opts.pattern = good;
|
||||
refs_for_each_ref_ext(get_main_ref_store(the_repository),
|
||||
add_bisect_ref, &cb, &opts);
|
||||
|
||||
if (prepare_revision_walk(revs))
|
||||
res = error(_("revision walk setup failed"));
|
||||
|
||||
@@ -1191,10 +1204,14 @@ static int verify_good(const struct bisect_terms *terms, const char *command)
|
||||
char *good_glob = xstrfmt("%s-*", terms->term_good);
|
||||
int no_checkout = refs_ref_exists(get_main_ref_store(the_repository),
|
||||
"BISECT_HEAD");
|
||||
struct refs_for_each_ref_options opts = {
|
||||
.pattern = good_glob,
|
||||
.prefix = "refs/bisect/",
|
||||
.trim_prefix = strlen("refs/bisect/"),
|
||||
};
|
||||
|
||||
refs_for_each_glob_ref_in(get_main_ref_store(the_repository),
|
||||
get_first_good, good_glob, "refs/bisect/",
|
||||
&good_rev);
|
||||
refs_for_each_ref_ext(get_main_ref_store(the_repository),
|
||||
get_first_good, &good_rev, &opts);
|
||||
free(good_glob);
|
||||
|
||||
if (refs_read_ref(get_main_ref_store(the_repository), no_checkout ? "BISECT_HEAD" : "HEAD", ¤t_rev))
|
||||
|
||||
@@ -614,9 +614,13 @@ static int opt_with_value(const char *arg, const char *opt, const char **value)
|
||||
static void handle_ref_opt(const char *pattern, const char *prefix)
|
||||
{
|
||||
if (pattern) {
|
||||
refs_for_each_glob_ref_in(get_main_ref_store(the_repository),
|
||||
show_reference, pattern, prefix,
|
||||
NULL);
|
||||
struct refs_for_each_ref_options opts = {
|
||||
.pattern = pattern,
|
||||
.prefix = prefix,
|
||||
.trim_prefix = prefix ? strlen(prefix) : 0,
|
||||
};
|
||||
refs_for_each_ref_ext(get_main_ref_store(the_repository),
|
||||
show_reference, NULL, &opts);
|
||||
} else {
|
||||
struct refs_for_each_ref_options opts = {
|
||||
.prefix = prefix,
|
||||
|
||||
11
refs.c
11
refs.c
@@ -607,17 +607,6 @@ void normalize_glob_ref(struct string_list_item *item, const char *prefix,
|
||||
strbuf_release(&normalized_pattern);
|
||||
}
|
||||
|
||||
int refs_for_each_glob_ref_in(struct ref_store *refs, refs_for_each_cb cb,
|
||||
const char *pattern, const char *prefix, void *cb_data)
|
||||
{
|
||||
struct refs_for_each_ref_options opts = {
|
||||
.pattern = pattern,
|
||||
.prefix = prefix,
|
||||
.trim_prefix = prefix ? strlen(prefix) : 0,
|
||||
};
|
||||
return refs_for_each_ref_ext(refs, cb, cb_data, &opts);
|
||||
}
|
||||
|
||||
int refs_for_each_glob_ref(struct ref_store *refs, refs_for_each_cb cb,
|
||||
const char *pattern, void *cb_data)
|
||||
{
|
||||
|
||||
3
refs.h
3
refs.h
@@ -531,9 +531,6 @@ int refs_for_each_ref_in_prefixes(struct ref_store *refs,
|
||||
int refs_for_each_glob_ref(struct ref_store *refs, refs_for_each_cb fn,
|
||||
const char *pattern, void *cb_data);
|
||||
|
||||
int refs_for_each_glob_ref_in(struct ref_store *refs, refs_for_each_cb fn,
|
||||
const char *pattern, const char *prefix, void *cb_data);
|
||||
|
||||
/*
|
||||
* references matching any pattern in "exclude_patterns" are omitted from the
|
||||
* result set on a best-effort basis.
|
||||
|
||||
30
revision.c
30
revision.c
@@ -2827,34 +2827,46 @@ static int handle_revision_pseudo_opt(struct rev_info *revs,
|
||||
exclude_hidden_refs(&revs->ref_excludes, optarg);
|
||||
return argcount;
|
||||
} else if (skip_prefix(arg, "--branches=", &optarg)) {
|
||||
struct refs_for_each_ref_options opts = {
|
||||
.prefix = "refs/heads/",
|
||||
.trim_prefix = strlen("refs/heads/"),
|
||||
.pattern = optarg,
|
||||
};
|
||||
struct all_refs_cb cb;
|
||||
if (revs->ref_excludes.hidden_refs_configured)
|
||||
return error(_("options '%s' and '%s' cannot be used together"),
|
||||
"--exclude-hidden", "--branches");
|
||||
init_all_refs_cb(&cb, revs, *flags);
|
||||
refs_for_each_glob_ref_in(get_main_ref_store(the_repository),
|
||||
handle_one_ref, optarg,
|
||||
"refs/heads/", &cb);
|
||||
refs_for_each_ref_ext(get_main_ref_store(the_repository),
|
||||
handle_one_ref, &cb, &opts);
|
||||
clear_ref_exclusions(&revs->ref_excludes);
|
||||
} else if (skip_prefix(arg, "--tags=", &optarg)) {
|
||||
struct refs_for_each_ref_options opts = {
|
||||
.prefix = "refs/tags/",
|
||||
.trim_prefix = strlen("refs/tags/"),
|
||||
.pattern = optarg,
|
||||
};
|
||||
struct all_refs_cb cb;
|
||||
if (revs->ref_excludes.hidden_refs_configured)
|
||||
return error(_("options '%s' and '%s' cannot be used together"),
|
||||
"--exclude-hidden", "--tags");
|
||||
init_all_refs_cb(&cb, revs, *flags);
|
||||
refs_for_each_glob_ref_in(get_main_ref_store(the_repository),
|
||||
handle_one_ref, optarg,
|
||||
"refs/tags/", &cb);
|
||||
refs_for_each_ref_ext(get_main_ref_store(the_repository),
|
||||
handle_one_ref, &cb, &opts);
|
||||
clear_ref_exclusions(&revs->ref_excludes);
|
||||
} else if (skip_prefix(arg, "--remotes=", &optarg)) {
|
||||
struct refs_for_each_ref_options opts = {
|
||||
.prefix = "refs/remotes/",
|
||||
.trim_prefix = strlen("refs/remotes/"),
|
||||
.pattern = optarg,
|
||||
};
|
||||
struct all_refs_cb cb;
|
||||
if (revs->ref_excludes.hidden_refs_configured)
|
||||
return error(_("options '%s' and '%s' cannot be used together"),
|
||||
"--exclude-hidden", "--remotes");
|
||||
init_all_refs_cb(&cb, revs, *flags);
|
||||
refs_for_each_glob_ref_in(get_main_ref_store(the_repository),
|
||||
handle_one_ref, optarg,
|
||||
"refs/remotes/", &cb);
|
||||
refs_for_each_ref_ext(get_main_ref_store(the_repository),
|
||||
handle_one_ref, &cb, &opts);
|
||||
clear_ref_exclusions(&revs->ref_excludes);
|
||||
} else if (!strcmp(arg, "--reflog")) {
|
||||
add_reflogs_to_pending(revs, *flags);
|
||||
|
||||
Reference in New Issue
Block a user