]> git.ipfire.org Git - thirdparty/git.git/commitdiff
refs: pass ref store when detecting dangling symrefs
authorPatrick Steinhardt <ps@pks.im>
Fri, 17 May 2024 08:18:53 +0000 (10:18 +0200)
committerJunio C Hamano <gitster@pobox.com>
Fri, 17 May 2024 17:33:38 +0000 (10:33 -0700)
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>
builtin/fetch.c
builtin/remote.c
refs.c
refs.h

index 3829d66b40de42543f38d3ce98a66c563be68f65..3df1c0c0522aa07e91760983eb9ff81f93b05398 100644 (file)
@@ -1412,7 +1412,8 @@ static int prune_refs(struct display_state *display_state,
                                           _("(none)"), ref->name,
                                           &ref->new_oid, &ref->old_oid,
                                           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);
                }
        }
 
index ff70d6835a49a33dcbe39a6af5af0661cdeaa06f..c0b513cc953b56a2ee28bd9fbb048a39188ef7e0 100644 (file)
@@ -1477,7 +1477,8 @@ static int prune_remote(const char *remote, int dry_run)
                               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);
        free_remote_ref_states(&states);
diff --git a/refs.c b/refs.c
index d705add3b83d1129b4132a0b0dd1ca76c636d43e..48323dd28d871e5853187e448d2f2afe783cb06e 100644 (file)
--- a/refs.c
+++ b/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 ref_store *refs;
        FILE *fp;
        const char *refname;
        const struct string_list *refnames;
@@ -463,8 +464,7 @@ static int warn_if_dangling_symref(const char *refname,
        if (!(flags & REF_ISSYMREF))
                return 0;
 
-       resolves_to = refs_resolve_ref_unsafe(get_main_ref_store(the_repository),
-                                             refname, 0, NULL, NULL);
+       resolves_to = refs_resolve_ref_unsafe(d->refs, refname, 0, NULL, NULL);
        if (!resolves_to
            || (d->refname
                ? strcmp(resolves_to, d->refname)
@@ -477,28 +477,28 @@ static int warn_if_dangling_symref(const char *refname,
        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;
-
-       data.fp = fp;
-       data.refname = refname;
-       data.refnames = NULL;
-       data.msg_fmt = msg_fmt;
-       refs_for_each_rawref(get_main_ref_store(the_repository),
-                            warn_if_dangling_symref, &data);
+       struct warn_if_dangling_data data = {
+               .refs = refs,
+               .fp = fp,
+               .refname = refname,
+               .msg_fmt = msg_fmt,
+       };
+       refs_for_each_rawref(refs, 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;
-
-       data.fp = fp;
-       data.refname = NULL;
-       data.refnames = refnames;
-       data.msg_fmt = msg_fmt;
-       refs_for_each_rawref(get_main_ref_store(the_repository),
-                            warn_if_dangling_symref, &data);
+       struct warn_if_dangling_data data = {
+               .refs = refs,
+               .fp = fp,
+               .refnames = refnames,
+               .msg_fmt = msg_fmt,
+       };
+       refs_for_each_rawref(refs, warn_if_dangling_symref, &data);
 }
 
 int refs_for_each_tag_ref(struct ref_store *refs, each_ref_fn fn, void *cb_data)
diff --git a/refs.h b/refs.h
index fa1f19464e3baffe8546919f37b35d6e944510f5..56d9714293d4f304918e60c537445db69b95594f 100644 (file)
--- a/refs.h
+++ b/refs.h
@@ -388,9 +388,10 @@ static inline const char *has_glob_specials(const char *pattern)
        return strpbrk(pattern, "?*[");
 }
 
-void warn_dangling_symref(FILE *fp, const char *msg_fmt, const char *refname);
-void warn_dangling_symrefs(FILE *fp, const char *msg_fmt,
-                          const struct string_list *refnames);
+void refs_warn_dangling_symref(struct ref_store *refs, FILE *fp,
+                              const char *msg_fmt, const char *refname);
+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()