refs: pass ref store when detecting dangling symrefs
Both `warn_dangling_symref()` and `warn_dangling_symrefs()` derive the ref store via `the_repository`. Adapt them to instead take in the ref store as a parameter. While at it, rename the functions to have a `ref_` prefix to align them with other functions that take a ref store. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
8378c9d27b
commit
330a2ae60b
|
@ -1412,7 +1412,8 @@ static int prune_refs(struct display_state *display_state,
|
||||||
_("(none)"), ref->name,
|
_("(none)"), ref->name,
|
||||||
&ref->new_oid, &ref->old_oid,
|
&ref->new_oid, &ref->old_oid,
|
||||||
summary_width);
|
summary_width);
|
||||||
warn_dangling_symref(stderr, dangling_msg, ref->name);
|
refs_warn_dangling_symref(get_main_ref_store(the_repository),
|
||||||
|
stderr, dangling_msg, ref->name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1477,7 +1477,8 @@ static int prune_remote(const char *remote, int dry_run)
|
||||||
abbrev_ref(refname, "refs/remotes/"));
|
abbrev_ref(refname, "refs/remotes/"));
|
||||||
}
|
}
|
||||||
|
|
||||||
warn_dangling_symrefs(stdout, dangling_msg, &refs_to_prune);
|
refs_warn_dangling_symrefs(get_main_ref_store(the_repository),
|
||||||
|
stdout, dangling_msg, &refs_to_prune);
|
||||||
|
|
||||||
string_list_clear(&refs_to_prune, 0);
|
string_list_clear(&refs_to_prune, 0);
|
||||||
free_remote_ref_states(&states);
|
free_remote_ref_states(&states);
|
||||||
|
|
40
refs.c
40
refs.c
|
@ -447,6 +447,7 @@ enum peel_status peel_object(const struct object_id *name, struct object_id *oid
|
||||||
}
|
}
|
||||||
|
|
||||||
struct warn_if_dangling_data {
|
struct warn_if_dangling_data {
|
||||||
|
struct ref_store *refs;
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
const char *refname;
|
const char *refname;
|
||||||
const struct string_list *refnames;
|
const struct string_list *refnames;
|
||||||
|
@ -463,8 +464,7 @@ static int warn_if_dangling_symref(const char *refname,
|
||||||
if (!(flags & REF_ISSYMREF))
|
if (!(flags & REF_ISSYMREF))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
resolves_to = refs_resolve_ref_unsafe(get_main_ref_store(the_repository),
|
resolves_to = refs_resolve_ref_unsafe(d->refs, refname, 0, NULL, NULL);
|
||||||
refname, 0, NULL, NULL);
|
|
||||||
if (!resolves_to
|
if (!resolves_to
|
||||||
|| (d->refname
|
|| (d->refname
|
||||||
? strcmp(resolves_to, d->refname)
|
? strcmp(resolves_to, d->refname)
|
||||||
|
@ -477,28 +477,28 @@ static int warn_if_dangling_symref(const char *refname,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void warn_dangling_symref(FILE *fp, const char *msg_fmt, const char *refname)
|
void refs_warn_dangling_symref(struct ref_store *refs, FILE *fp,
|
||||||
|
const char *msg_fmt, const char *refname)
|
||||||
{
|
{
|
||||||
struct warn_if_dangling_data data;
|
struct warn_if_dangling_data data = {
|
||||||
|
.refs = refs,
|
||||||
data.fp = fp;
|
.fp = fp,
|
||||||
data.refname = refname;
|
.refname = refname,
|
||||||
data.refnames = NULL;
|
.msg_fmt = msg_fmt,
|
||||||
data.msg_fmt = msg_fmt;
|
};
|
||||||
refs_for_each_rawref(get_main_ref_store(the_repository),
|
refs_for_each_rawref(refs, warn_if_dangling_symref, &data);
|
||||||
warn_if_dangling_symref, &data);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void warn_dangling_symrefs(FILE *fp, const char *msg_fmt, const struct string_list *refnames)
|
void refs_warn_dangling_symrefs(struct ref_store *refs, FILE *fp,
|
||||||
|
const char *msg_fmt, const struct string_list *refnames)
|
||||||
{
|
{
|
||||||
struct warn_if_dangling_data data;
|
struct warn_if_dangling_data data = {
|
||||||
|
.refs = refs,
|
||||||
data.fp = fp;
|
.fp = fp,
|
||||||
data.refname = NULL;
|
.refnames = refnames,
|
||||||
data.refnames = refnames;
|
.msg_fmt = msg_fmt,
|
||||||
data.msg_fmt = msg_fmt;
|
};
|
||||||
refs_for_each_rawref(get_main_ref_store(the_repository),
|
refs_for_each_rawref(refs, warn_if_dangling_symref, &data);
|
||||||
warn_if_dangling_symref, &data);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int refs_for_each_tag_ref(struct ref_store *refs, each_ref_fn fn, void *cb_data)
|
int refs_for_each_tag_ref(struct ref_store *refs, each_ref_fn fn, void *cb_data)
|
||||||
|
|
7
refs.h
7
refs.h
|
@ -388,9 +388,10 @@ static inline const char *has_glob_specials(const char *pattern)
|
||||||
return strpbrk(pattern, "?*[");
|
return strpbrk(pattern, "?*[");
|
||||||
}
|
}
|
||||||
|
|
||||||
void warn_dangling_symref(FILE *fp, const char *msg_fmt, const char *refname);
|
void refs_warn_dangling_symref(struct ref_store *refs, FILE *fp,
|
||||||
void warn_dangling_symrefs(FILE *fp, const char *msg_fmt,
|
const char *msg_fmt, const char *refname);
|
||||||
const struct string_list *refnames);
|
void refs_warn_dangling_symrefs(struct ref_store *refs, FILE *fp,
|
||||||
|
const char *msg_fmt, const struct string_list *refnames);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Flags for controlling behaviour of pack_refs()
|
* Flags for controlling behaviour of pack_refs()
|
||||||
|
|
Loading…
Reference in New Issue