refs: pass NULL to resolve_ref_unsafe() if hash is not needed

This allows us to get rid of some write-only variables, among them seven SHA1 buffers. Signed-off-by: Rene Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>

René Scharfe committed Sep 23, 2017 at 11:45 UTC 744c040b19412fa5075810eb1aced105fad96726
14 files changed +19 -38
branch.c
+1 -2
@@ -191,9 +191,8 @@ int validate_new_branchname(const char *name, struct strbuf *ref,
191
192 if (!attr_only) {
193 const char *head;
194 - struct object_id oid;
194
196 - head = resolve_ref_unsafe("HEAD", 0, oid.hash, NULL);
195 + head = resolve_ref_unsafe("HEAD", 0, NULL, NULL);
196 if (!is_bare_repository() && head && !strcmp(head, ref->buf))
197 die(_("Cannot force update the current branch."));
198 }
builtin/commit.c
+1 -2
@@ -1431,7 +1431,6 @@ static void print_summary(const char *prefix, const struct object_id *oid,
1431 struct rev_info rev;
1432 struct commit *commit;
1433 struct strbuf format = STRBUF_INIT;
1434 - struct object_id junk_oid;
1434 const char *head;
1435 struct pretty_print_context pctx = {0};
1436 struct strbuf author_ident = STRBUF_INIT;
@@ -1484,7 +1483,7 @@ static void print_summary(const char *prefix, const struct object_id *oid,
1483 rev.diffopt.break_opt = 0;
1484 diff_setup_done(&rev.diffopt);
1485
1487 - head = resolve_ref_unsafe("HEAD", 0, junk_oid.hash, NULL);
1486 + head = resolve_ref_unsafe("HEAD", 0, NULL, NULL);
1487 if (!strcmp(head, "HEAD"))
1488 head = _("detached HEAD");
1489 else
builtin/log.c
+1 -2
@@ -1660,10 +1660,9 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
1660 check_head = 1;
1661
1662 if (check_head) {
1663 - struct object_id oid;
1663 const char *ref, *v;
1664 ref = resolve_ref_unsafe("HEAD", RESOLVE_REF_READING,
1666 - oid.hash, NULL);
1665 + NULL, NULL);
1666 if (ref && skip_prefix(ref, "refs/heads/", &v))
1667 branch_name = xstrdup(v);
1668 else
builtin/receive-pack.c
+1 -2
@@ -1207,11 +1207,10 @@ static void check_aliased_update(struct command *cmd, struct string_list *list)
1207 const char *dst_name;
1208 struct string_list_item *item;
1209 struct command *dst_cmd;
1210 - unsigned char sha1[GIT_MAX_RAWSZ];
1210 int flag;
1211
1212 strbuf_addf(&buf, "%s%s", get_git_namespace(), cmd->ref_name);
1214 - dst_name = resolve_ref_unsafe(buf.buf, 0, sha1, &flag);
1213 + dst_name = resolve_ref_unsafe(buf.buf, 0, NULL, &flag);
1214 strbuf_release(&buf);
1215
1216 if (!(flag & REF_ISSYMREF))
builtin/remote.c
+1 -2
@@ -558,14 +558,13 @@ static int read_remote_branches(const char *refname,
558 struct strbuf buf = STRBUF_INIT;
559 struct string_list_item *item;
560 int flag;
561 - struct object_id orig_oid;
561 const char *symref;
562
563 strbuf_addf(&buf, "refs/remotes/%s/", rename->old);
564 if (starts_with(refname, buf.buf)) {
565 item = string_list_append(rename->remote_branches, xstrdup(refname));
566 symref = resolve_ref_unsafe(refname, RESOLVE_REF_READING,
568 - orig_oid.hash, &flag);
567 + NULL, &flag);
568 if (flag & REF_ISSYMREF)
569 item->util = xstrdup(symref);
570 else
builtin/submodule--helper.c
+2 -4
@@ -17,9 +17,8 @@
17 static char *get_default_remote(void)
18 {
19 char *dest = NULL, *ret;
20 - unsigned char sha1[20];
20 struct strbuf sb = STRBUF_INIT;
22 - const char *refname = resolve_ref_unsafe("HEAD", 0, sha1, NULL);
21 + const char *refname = resolve_ref_unsafe("HEAD", 0, NULL, NULL);
22
23 if (!refname)
24 die(_("No such ref: %s"), "HEAD");
@@ -1089,8 +1088,7 @@ static const char *remote_submodule_branch(const char *path)
1088 return "master";
1089
1090 if (!strcmp(branch, ".")) {
1092 - unsigned char sha1[20];
1093 - const char *refname = resolve_ref_unsafe("HEAD", 0, sha1, NULL);
1091 + const char *refname = resolve_ref_unsafe("HEAD", 0, NULL, NULL);
1092
1093 if (!refname)
1094 die(_("No such ref: %s"), "HEAD");
builtin/symbolic-ref.c
+1 -2
@@ -12,9 +12,8 @@ static const char * const git_symbolic_ref_usage[] = {
12
13 static int check_symref(const char *HEAD, int quiet, int shorten, int print)
14 {
15 - unsigned char sha1[20];
15 int flag;
17 - const char *refname = resolve_ref_unsafe(HEAD, 0, sha1, &flag);
16 + const char *refname = resolve_ref_unsafe(HEAD, 0, NULL, &flag);
17
18 if (!refname)
19 die("No such ref: %s", HEAD);
http-backend.c
+1 -2
@@ -486,10 +486,9 @@ static int show_head_ref(const char *refname, const struct object_id *oid,
486 struct strbuf *buf = cb_data;
487
488 if (flag & REF_ISSYMREF) {
489 - struct object_id unused;
489 const char *target = resolve_ref_unsafe(refname,
490 RESOLVE_REF_READING,
492 - unused.hash, NULL);
491 + NULL, NULL);
492
493 if (target)
494 strbuf_addf(buf, "ref: %s\n", strip_namespace(target));
log-tree.c
+1 -2
@@ -185,7 +185,6 @@ static const struct name_decoration *current_pointed_by_HEAD(const struct name_d
185 {
186 const struct name_decoration *list, *head = NULL;
187 const char *branch_name = NULL;
188 - struct object_id unused;
188 int rru_flags;
189
190 /* First find HEAD */
@@ -198,7 +197,7 @@ static const struct name_decoration *current_pointed_by_HEAD(const struct name_d
197 return NULL;
198
199 /* Now resolve and find the matching current branch */
201 - branch_name = resolve_ref_unsafe("HEAD", 0, unused.hash, &rru_flags);
200 + branch_name = resolve_ref_unsafe("HEAD", 0, NULL, &rru_flags);
201 if (!(rru_flags & REF_ISSYMREF))
202 return NULL;
203
refs.c
+2 -4
@@ -239,8 +239,7 @@ int read_ref(const char *refname, unsigned char *sha1)
239
240 int ref_exists(const char *refname)
241 {
242 - unsigned char sha1[20];
243 - return !!resolve_ref_unsafe(refname, RESOLVE_REF_READING, sha1, NULL);
242 + return !!resolve_ref_unsafe(refname, RESOLVE_REF_READING, NULL, NULL);
243 }
244
245 static int filter_refs(const char *refname, const struct object_id *oid,
@@ -286,12 +285,11 @@ static int warn_if_dangling_symref(const char *refname, const struct object_id *
285 {
286 struct warn_if_dangling_data *d = cb_data;
287 const char *resolves_to;
289 - struct object_id junk;
288
289 if (!(flags & REF_ISSYMREF))
290 return 0;
291
294 - resolves_to = resolve_ref_unsafe(refname, 0, junk.hash, NULL);
292 + resolves_to = resolve_ref_unsafe(refname, 0, NULL, NULL);
293 if (!resolves_to
294 || (d->refname
295 ? strcmp(resolves_to, d->refname)
remote.c
+4 -8
@@ -466,7 +466,6 @@ static void alias_all_urls(void)
466 static void read_config(void)
467 {
468 static int loaded;
469 - struct object_id oid;
469 int flag;
470
471 if (loaded)
@@ -475,7 +474,7 @@ static void read_config(void)
474
475 current_branch = NULL;
476 if (startup_info->have_repository) {
478 - const char *head_ref = resolve_ref_unsafe("HEAD", 0, oid.hash, &flag);
477 + const char *head_ref = resolve_ref_unsafe("HEAD", 0, NULL, &flag);
478 if (head_ref && (flag & REF_ISSYMREF) &&
479 skip_prefix(head_ref, "refs/heads/", &head_ref)) {
480 current_branch = make_branch(head_ref, 0);
@@ -1105,10 +1104,9 @@ static struct ref *make_linked_ref(const char *name, struct ref ***tail)
1104 static char *guess_ref(const char *name, struct ref *peer)
1105 {
1106 struct strbuf buf = STRBUF_INIT;
1108 - struct object_id oid;
1107
1108 const char *r = resolve_ref_unsafe(peer->name, RESOLVE_REF_READING,
1111 - oid.hash, NULL);
1109 + NULL, NULL);
1110 if (!r)
1111 return NULL;
1112
@@ -1166,12 +1164,11 @@ static int match_explicit(struct ref *src, struct ref *dst,
1164 return -1;
1165
1166 if (!dst_value) {
1169 - struct object_id oid;
1167 int flag;
1168
1169 dst_value = resolve_ref_unsafe(matched_src->name,
1170 RESOLVE_REF_READING,
1174 - oid.hash, &flag);
1171 + NULL, &flag);
1172 if (!dst_value ||
1173 ((flag & REF_ISSYMREF) &&
1174 !starts_with(dst_value, "refs/heads/")))
@@ -1792,10 +1789,9 @@ const char *branch_get_push(struct branch *branch, struct strbuf *err)
1789
1790 static int ignore_symref_update(const char *refname)
1791 {
1795 - struct object_id oid;
1792 int flag;
1793
1798 - if (!resolve_ref_unsafe(refname, 0, oid.hash, &flag))
1794 + if (!resolve_ref_unsafe(refname, 0, NULL, &flag))
1795 return 0; /* non-existing refs are OK */
1796 return (flag & REF_ISSYMREF);
1797 }
revision.c
+1 -2
@@ -2263,11 +2263,10 @@ static int handle_revision_pseudo_opt(const char *submodule,
2263
2264 static void NORETURN diagnose_missing_default(const char *def)
2265 {
2266 - unsigned char sha1[20];
2266 int flags;
2267 const char *refname;
2268
2270 - refname = resolve_ref_unsafe(def, 0, sha1, &flags);
2269 + refname = resolve_ref_unsafe(def, 0, NULL, &flags);
2270 if (!refname || !(flags & REF_ISSYMREF) || (flags & REF_ISBROKEN))
2271 die(_("your current branch appears to be broken"));
2272
transport.c
+1 -2
@@ -26,7 +26,6 @@ static void set_upstreams(struct transport *transport, struct ref *refs,
26 const char *localname;
27 const char *tmp;
28 const char *remotename;
29 - unsigned char sha[20];
29 int flag = 0;
30 /*
31 * Check suitability for tracking. Must be successful /
@@ -44,7 +43,7 @@ static void set_upstreams(struct transport *transport, struct ref *refs,
43 localname = ref->peer_ref->name;
44 remotename = ref->name;
45 tmp = resolve_ref_unsafe(localname, RESOLVE_REF_READING,
47 - sha, &flag);
46 + NULL, &flag);
47 if (tmp && flag & REF_ISSYMREF &&
48 starts_with(tmp, "refs/heads/"))
49 localname = tmp;
upload-pack.c
+1 -2
@@ -965,11 +965,10 @@ static int find_symref(const char *refname, const struct object_id *oid,
965 {
966 const char *symref_target;
967 struct string_list_item *item;
968 - struct object_id unused;
968
969 if ((flag & REF_ISSYMREF) == 0)
970 return 0;
972 - symref_target = resolve_ref_unsafe(refname, 0, unused.hash, &flag);
971 + symref_target = resolve_ref_unsafe(refname, 0, NULL, &flag);
972 if (!symref_target || (flag & REF_ISSYMREF) == 0)
973 die("'%s' is a symref but it is not?", refname);
974 item = string_list_append(cb_data, refname);