refspec: replace `refspec_item_init()` with fetch/push variants

For similar reasons as in the previous refactoring of `refspec_init()` into `refspec_init_fetch()` and `refspec_init_push()`, apply the same refactoring to `refspec_item_init()`. Signed-off-by: Taylor Blau <me@ttaylorr.com> Acked-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Taylor Blau committed Mar 18, 2025 at 18:50 UTC 459e54b5497b53f298fe9164112f9bcb33bedb8d
4 files changed +23 -7
builtin/fetch.c
+1 -1
@@ -586,7 +586,7 @@ static struct ref *get_ref_map(struct remote *remote,
586 struct refspec_item tag_refspec;
587
588 /* also fetch all tags */
589 - refspec_item_init(&tag_refspec, TAG_REFSPEC, 0);
589 + refspec_item_init_push(&tag_refspec, TAG_REFSPEC);
590 get_fetch_map(remote_refs, &tag_refspec, &tail, 0);
591 refspec_item_clear(&tag_refspec);
592 } else if (tags == TAGS_DEFAULT && *autotags) {
builtin/pull.c
+1 -1
@@ -738,7 +738,7 @@ static const char *get_tracking_branch(const char *remote, const char *refspec)
738 const char *spec_src;
739 const char *merge_branch;
740
741 - if (!refspec_item_init(&spec, refspec, 1))
741 + if (!refspec_item_init_fetch(&spec, refspec))
742 die(_("invalid refspec '%s'"), refspec);
743 spec_src = spec.src;
744 if (!*spec_src || !strcmp(spec_src, "HEAD"))
refspec.c
+19 -3
@@ -153,13 +153,24 @@ static int parse_refspec(struct refspec_item *item, const char *refspec, int fet
153 return 1;
154 }
155
156 -int refspec_item_init(struct refspec_item *item, const char *refspec, int fetch)
156 +static int refspec_item_init(struct refspec_item *item, const char *refspec,
157 + int fetch)
158 {
159 memset(item, 0, sizeof(*item));
160 item->raw = xstrdup(refspec);
161 return parse_refspec(item, refspec, fetch);
162 }
163
164 +int refspec_item_init_fetch(struct refspec_item *item, const char *refspec)
165 +{
166 + return refspec_item_init(item, refspec, 1);
167 +}
168 +
169 +int refspec_item_init_push(struct refspec_item *item, const char *refspec)
170 +{
171 + return refspec_item_init(item, refspec, 0);
172 +}
173 +
174 void refspec_item_clear(struct refspec_item *item)
175 {
176 FREE_AND_NULL(item->src);
@@ -186,8 +197,13 @@ void refspec_init_push(struct refspec *rs)
197 void refspec_append(struct refspec *rs, const char *refspec)
198 {
199 struct refspec_item item;
200 + int ret;
201
190 - if (!refspec_item_init(&item, refspec, rs->fetch))
202 + if (rs->fetch)
203 + ret = refspec_item_init_fetch(&item, refspec);
204 + else
205 + ret = refspec_item_init_push(&item, refspec);
206 + if (!ret)
207 die(_("invalid refspec '%s'"), refspec);
208
209 ALLOC_GROW(rs->items, rs->nr + 1, rs->alloc);
@@ -233,7 +249,7 @@ void refspec_clear(struct refspec *rs)
249 int valid_fetch_refspec(const char *fetch_refspec_str)
250 {
251 struct refspec_item refspec;
236 - int ret = refspec_item_init(&refspec, fetch_refspec_str, 1);
252 + int ret = refspec_item_init_fetch(&refspec, fetch_refspec_str);
253 refspec_item_clear(&refspec);
254 return ret;
255 }
refspec.h
+2 -2
@@ -47,8 +47,8 @@ struct refspec {
47 unsigned fetch : 1;
48 };
49
50 -int refspec_item_init(struct refspec_item *item, const char *refspec,
51 - int fetch);
50 +int refspec_item_init_fetch(struct refspec_item *item, const char *refspec);
51 +int refspec_item_init_push(struct refspec_item *item, const char *refspec);
52 void refspec_item_clear(struct refspec_item *item);
53 void refspec_init_fetch(struct refspec *rs);
54 void refspec_init_push(struct refspec *rs);