diff options
author | René Scharfe <l.s.r@web.de> | 2020-09-05 16:49:30 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2020-09-06 22:15:46 +0200 |
commit | 1af8b8c0a570ee0b12a19fdd920a3ea09fb22a75 (patch) | |
tree | cd2da63870b04868b3da654be43241f2b5ce7f48 /builtin/push.c | |
parent | push: release strbufs used for refspec formatting (diff) | |
download | git-1af8b8c0a570ee0b12a19fdd920a3ea09fb22a75.tar.xz git-1af8b8c0a570ee0b12a19fdd920a3ea09fb22a75.zip |
refspec: add and use refspec_appendf()
Add a function for building a refspec using printf-style formatting. It
frees callers from managing their own buffer. Use it throughout the
tree to shorten and simplify its callers.
Signed-off-by: René Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/push.c')
-rw-r--r-- | builtin/push.c | 40 |
1 files changed, 10 insertions, 30 deletions
diff --git a/builtin/push.c b/builtin/push.c index 0f3c108c93..0eeb2c8dd5 100644 --- a/builtin/push.c +++ b/builtin/push.c @@ -78,12 +78,9 @@ static void refspec_append_mapped(struct refspec *refspec, const char *ref, memset(&query, 0, sizeof(struct refspec_item)); query.src = matched->name; if (!query_refspecs(&remote->push, &query) && query.dst) { - struct strbuf buf = STRBUF_INIT; - strbuf_addf(&buf, "%s%s:%s", - query.force ? "+" : "", - query.src, query.dst); - refspec_append(refspec, buf.buf); - strbuf_release(&buf); + refspec_appendf(refspec, "%s%s:%s", + query.force ? "+" : "", + query.src, query.dst); return; } } @@ -92,11 +89,8 @@ static void refspec_append_mapped(struct refspec *refspec, const char *ref, skip_prefix(matched->name, "refs/heads/", &branch_name)) { struct branch *branch = branch_get(branch_name); if (branch->merge_nr == 1 && branch->merge[0]->src) { - struct strbuf buf = STRBUF_INIT; - strbuf_addf(&buf, "%s:%s", - ref, branch->merge[0]->src); - refspec_append(refspec, buf.buf); - strbuf_release(&buf); + refspec_appendf(refspec, "%s:%s", + ref, branch->merge[0]->src); return; } } @@ -113,23 +107,17 @@ static void set_refspecs(const char **refs, int nr, const char *repo) for (i = 0; i < nr; i++) { const char *ref = refs[i]; if (!strcmp("tag", ref)) { - struct strbuf tagref = STRBUF_INIT; if (nr <= ++i) die(_("tag shorthand without <tag>")); ref = refs[i]; if (deleterefs) - strbuf_addf(&tagref, ":refs/tags/%s", ref); + refspec_appendf(&rs, ":refs/tags/%s", ref); else - strbuf_addf(&tagref, "refs/tags/%s", ref); - refspec_append(&rs, tagref.buf); - strbuf_release(&tagref); + refspec_appendf(&rs, "refs/tags/%s", ref); } else if (deleterefs) { - struct strbuf delref = STRBUF_INIT; if (strchr(ref, ':')) die(_("--delete only accepts plain target ref names")); - strbuf_addf(&delref, ":%s", ref); - refspec_append(&rs, delref.buf); - strbuf_release(&delref); + refspec_appendf(&rs, ":%s", ref); } else if (!strchr(ref, ':')) { if (!remote) { /* lazily grab remote and local_refs */ @@ -200,8 +188,6 @@ static const char message_detached_head_die[] = static void setup_push_upstream(struct remote *remote, struct branch *branch, int triangular, int simple) { - struct strbuf refspec = STRBUF_INIT; - if (!branch) die(_(message_detached_head_die), remote->name); if (!branch->merge_nr || !branch->merge || !branch->remote_name) @@ -227,20 +213,14 @@ static void setup_push_upstream(struct remote *remote, struct branch *branch, die_push_simple(branch, remote); } - strbuf_addf(&refspec, "%s:%s", branch->refname, branch->merge[0]->src); - refspec_append(&rs, refspec.buf); - strbuf_release(&refspec); + refspec_appendf(&rs, "%s:%s", branch->refname, branch->merge[0]->src); } static void setup_push_current(struct remote *remote, struct branch *branch) { - struct strbuf refspec = STRBUF_INIT; - if (!branch) die(_(message_detached_head_die), remote->name); - strbuf_addf(&refspec, "%s:%s", branch->refname, branch->refname); - refspec_append(&rs, refspec.buf); - strbuf_release(&refspec); + refspec_appendf(&rs, "%s:%s", branch->refname, branch->refname); } static int is_workflow_triangular(struct remote *remote) |