fetch: use ref_namespaces during prefetch

The "refs/prefetch/" namespace is used by 'git fetch --prefetch' as a replacement of the destination of the refpsec for a remote. Git also removes refspecs that include tags. Instead of using string literals for the 'refs/tags/ and 'refs/prefetch/' namespaces, use the entries in the ref_namespaces array. This kind of change could be done in many places around the codebase, but we are isolating only to this change because of the way the refs/prefetch/ namespace somewhat motivated the creation of the ref_namespaces array. Signed-off-by: Derrick Stolee <derrickstolee@github.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Derrick Stolee committed Aug 5, 2022 at 17:58 UTC 992f25d713d8fe02966491bbe6f45fd18e3b8d02
1 file changed +4 -2
builtin/fetch.c
+4 -2
@@ -490,7 +490,9 @@ static void filter_prefetch_refspec(struct refspec *rs)
490 continue;
491 if (!rs->items[i].dst ||
492 (rs->items[i].src &&
493 - !strncmp(rs->items[i].src, "refs/tags/", 10))) {
493 + !strncmp(rs->items[i].src,
494 + ref_namespace[NAMESPACE_TAGS].ref,
495 + strlen(ref_namespace[NAMESPACE_TAGS].ref)))) {
496 int j;
497
498 free(rs->items[i].src);
@@ -506,7 +508,7 @@ static void filter_prefetch_refspec(struct refspec *rs)
508 }
509
510 old_dst = rs->items[i].dst;
509 - strbuf_addstr(&new_dst, "refs/prefetch/");
511 + strbuf_addstr(&new_dst, ref_namespace[NAMESPACE_PREFETCH].ref);
512
513 /*
514 * If old_dst starts with "refs/", then place