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>
Patrick Steinhardt committed
May 17, 2024 at 10:18 UTC
330a2ae60b2c6867ff2a94d54a64ace9bc94990e
4 files changed
+28
-25
builtin/fetch.c
+2
-1
@@ -1412,7 +1412,8 @@ static int prune_refs(struct display_state *display_state,
1412
_("(none)"), ref->name,
1413
&ref->new_oid, &ref->old_oid,
1414
summary_width);
1415
- warn_dangling_symref(stderr, dangling_msg, ref->name);
1415
+ refs_warn_dangling_symref(get_main_ref_store(the_repository),
1416
+ stderr, dangling_msg, ref->name);
1417
}
1418
}
1419
builtin/remote.c
+2
-1
@@ -1477,7 +1477,8 @@ static int prune_remote(const char *remote, int dry_run)
1477
abbrev_ref(refname, "refs/remotes/"));
1478
}
1479
1480
- warn_dangling_symrefs(stdout, dangling_msg, &refs_to_prune);
1480
+ refs_warn_dangling_symrefs(get_main_ref_store(the_repository),
1481
+ stdout, dangling_msg, &refs_to_prune);
1482
1483
string_list_clear(&refs_to_prune, 0);
1484
free_remote_ref_states(&states);
refs.c
+20
-20
@@ -447,6 +447,7 @@ enum peel_status peel_object(const struct object_id *name, struct object_id *oid
447
}
448
449
struct warn_if_dangling_data {
450
+ struct ref_store *refs;
451
FILE *fp;
452
const char *refname;
453
const struct string_list *refnames;
@@ -463,8 +464,7 @@ static int warn_if_dangling_symref(const char *refname,
464
if (!(flags & REF_ISSYMREF))
465
return 0;
466
466
- resolves_to = refs_resolve_ref_unsafe(get_main_ref_store(the_repository),
467
- refname, 0, NULL, NULL);
467
+ resolves_to = refs_resolve_ref_unsafe(d->refs, refname, 0, NULL, NULL);
468
if (!resolves_to
469
|| (d->refname
470
? strcmp(resolves_to, d->refname)
@@ -477,28 +477,28 @@ static int warn_if_dangling_symref(const char *refname,
477
return 0;
478
}
479
480
-void warn_dangling_symref(FILE *fp, const char *msg_fmt, const char *refname)
480
+void refs_warn_dangling_symref(struct ref_store *refs, FILE *fp,
481
+ const char *msg_fmt, const char *refname)
482
{
482
- struct warn_if_dangling_data data;
483
-
484
- data.fp = fp;
485
- data.refname = refname;
486
- data.refnames = NULL;
487
- data.msg_fmt = msg_fmt;
488
- refs_for_each_rawref(get_main_ref_store(the_repository),
489
- warn_if_dangling_symref, &data);
483
+ struct warn_if_dangling_data data = {
484
+ .refs = refs,
485
+ .fp = fp,
486
+ .refname = refname,
487
+ .msg_fmt = msg_fmt,
488
+ };
489
+ refs_for_each_rawref(refs, warn_if_dangling_symref, &data);
490
}
491
492
-void warn_dangling_symrefs(FILE *fp, const char *msg_fmt, const struct string_list *refnames)
492
+void refs_warn_dangling_symrefs(struct ref_store *refs, FILE *fp,
493
+ const char *msg_fmt, const struct string_list *refnames)
494
{
494
- struct warn_if_dangling_data data;
495
-
496
- data.fp = fp;
497
- data.refname = NULL;
498
- data.refnames = refnames;
499
- data.msg_fmt = msg_fmt;
500
- refs_for_each_rawref(get_main_ref_store(the_repository),
501
- warn_if_dangling_symref, &data);
495
+ struct warn_if_dangling_data data = {
496
+ .refs = refs,
497
+ .fp = fp,
498
+ .refnames = refnames,
499
+ .msg_fmt = msg_fmt,
500
+ };
501
+ refs_for_each_rawref(refs, warn_if_dangling_symref, &data);
502
}
503
504
int refs_for_each_tag_ref(struct ref_store *refs, each_ref_fn fn, void *cb_data)
refs.h
+4
-3
@@ -388,9 +388,10 @@ static inline const char *has_glob_specials(const char *pattern)
388
return strpbrk(pattern, "?*[");
389
}
390
391
-void warn_dangling_symref(FILE *fp, const char *msg_fmt, const char *refname);
392
-void warn_dangling_symrefs(FILE *fp, const char *msg_fmt,
393
- const struct string_list *refnames);
391
+void refs_warn_dangling_symref(struct ref_store *refs, FILE *fp,
392
+ const char *msg_fmt, const char *refname);
393
+void refs_warn_dangling_symrefs(struct ref_store *refs, FILE *fp,
394
+ const char *msg_fmt, const struct string_list *refnames);
395
396
/*
397
* Flags for controlling behaviour of pack_refs()