diff options
author | Jeff King <peff@peff.net> | 2015-05-21 00:45:28 -0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2015-05-21 11:04:42 -0700 |
commit | a9f9f8cc1f59104257eb1a11a2d048f54dd92ee6 (patch) | |
tree | 2d9d48360152e6090d6c6ebf7591017cb7709083 /builtin | |
parent | 8770e6fbb28dffdf9e00d05365120e438d3d236f (diff) | |
download | git-a9f9f8cc1f59104257eb1a11a2d048f54dd92ee6.tar.gz |
remote.c: introduce branch_get_upstream helper
All of the information needed to find the @{upstream} of a
branch is included in the branch struct, but callers have to
navigate a series of possible-NULL values to get there.
Let's wrap that logic up in an easy-to-read helper.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin')
-rw-r--r-- | builtin/branch.c | 8 | ||||
-rw-r--r-- | builtin/for-each-ref.c | 5 | ||||
-rw-r--r-- | builtin/log.c | 7 |
3 files changed, 7 insertions, 13 deletions
diff --git a/builtin/branch.c b/builtin/branch.c index 1d150378e9..bd1fa0b43a 100644 --- a/builtin/branch.c +++ b/builtin/branch.c @@ -123,14 +123,12 @@ static int branch_merged(int kind, const char *name, if (kind == REF_LOCAL_BRANCH) { struct branch *branch = branch_get(name); + const char *upstream = branch_get_upstream(branch); unsigned char sha1[20]; - if (branch && - branch->merge && - branch->merge[0] && - branch->merge[0]->dst && + if (upstream && (reference_name = reference_name_to_free = - resolve_refdup(branch->merge[0]->dst, RESOLVE_REF_READING, + resolve_refdup(upstream, RESOLVE_REF_READING, sha1, NULL)) != NULL) reference_rev = lookup_commit_reference(sha1); } diff --git a/builtin/for-each-ref.c b/builtin/for-each-ref.c index 83f9cf9163..dc2a201a45 100644 --- a/builtin/for-each-ref.c +++ b/builtin/for-each-ref.c @@ -664,10 +664,9 @@ static void populate_value(struct refinfo *ref) continue; branch = branch_get(ref->refname + 11); - if (!branch || !branch->merge || !branch->merge[0] || - !branch->merge[0]->dst) + refname = branch_get_upstream(branch); + if (!refname) continue; - refname = branch->merge[0]->dst; } else if (starts_with(name, "color:")) { char color[COLOR_MAXLEN] = ""; diff --git a/builtin/log.c b/builtin/log.c index dd8f3fcfc4..fb61c08ee5 100644 --- a/builtin/log.c +++ b/builtin/log.c @@ -1632,16 +1632,13 @@ int cmd_cherry(int argc, const char **argv, const char *prefix) break; default: current_branch = branch_get(NULL); - if (!current_branch || !current_branch->merge - || !current_branch->merge[0] - || !current_branch->merge[0]->dst) { + upstream = branch_get_upstream(current_branch); + if (!upstream) { fprintf(stderr, _("Could not find a tracked" " remote branch, please" " specify <upstream> manually.\n")); usage_with_options(cherry_usage, options); } - - upstream = current_branch->merge[0]->dst; } init_revisions(&revs, prefix); |