Re: [PATCH v3 07/14] remote.c: introduce branch_get_upstream helper
- From
Junio C Hamano <gitster@pobox.com>
- Date
- May 21, 2015, 18:07 UTC
- Message-ID
- <xmqqbnhdkdne.fsf@gitster.dls.corp.google.com>
- In-Reply-To
- <20150521044528.GG23409@peff.net>
Jeff King <peff@peff.net> writes:
Show 6 quoted lines
> 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>This step in the whole series is a gem. I cannot believe that we were content having to repeat that "branch->merge[0]->dst if we can dereference down to that level" this many times. Nice clean-up.
Show 21 quoted lines
> diff --git a/builtin/branch.c b/builtin/branch.c
> index 258fe2f..1eb6215 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);