git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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);
Previous: Jeff KingNext: Jeff King
Message 10 of 27 in “implement @{push} shorthand”
  1. 0/14 implement @{push} shorthandJeff King, May 21, 2015
  2. 01/14 remote.c: drop default_remote_name variableJeff King, May 21, 2015
  3. 02/14 remote.c: refactor setup of branch->merge listJeff King, May 21, 2015
  4. Junio C HamanoMay 21, 2015
  5. 03/14 remote.c: drop "remote" pointer from "struct branch"Jeff King, May 21, 2015
  6. 04/14 remote.c: hoist branch.*.remote lookup out of remote_get_1Jeff King, May 21, 2015
  7. 05/14 remote.c: provide per-branch pushremote nameJeff King, May 21, 2015
  8. 06/14 remote.c: hoist read_config into remote_get_1Jeff King, May 21, 2015
  9. 07/14 remote.c: introduce branch_get_upstream helperJeff King, May 21, 2015
  10. Junio C HamanoMay 21, 2015
  11. Jeff KingMay 21, 2015
  12. Jeff KingMay 21, 2015
  13. Junio C HamanoMay 21, 2015
  14. 08/14 remote.c: report specific errors from branch_get_upstreamJeff King, May 21, 2015
  15. Junio C HamanoMay 21, 2015
  16. Jeff KingMay 21, 2015
  17. Junio C HamanoMay 21, 2015
  18. Jeff KingMay 22, 2015
  19. Jeff KingMay 22, 2015
  20. 09/14 remote.c: add branch_get_pushJeff King, May 21, 2015
  21. 10/14 sha1_name: refactor upstream_markJeff King, May 21, 2015
  22. 11/14 sha1_name: refactor interpret_upstream_markJeff King, May 21, 2015
  23. 12/14 sha1_name: implement @{push} shorthandJeff King, May 21, 2015
  24. 13/14 for-each-ref: use skip_prefix instead of starts_withJeff King, May 21, 2015
  25. 14/14 for-each-ref: accept "%(push)" formatJeff King, May 21, 2015
  26. Jeff KingMay 21, 2015
  27. Junio C HamanoMay 21, 2015

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.