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

Re: [PATCH v2 1/3] for-each-ref: let upstream/push optionally report the remote name

From
Junio C Hamano <gitster@pobox.com>
Date
Oct 11, 2017, 02:07 UTC
Message-ID
<xmqqinfmo2sf.fsf@gitster.mtv.corp.google.com>
In-Reply-To
<964525df50e6d35847bcf57b0fe0949c99f0dbca.1507205895.git.johannes.schindelin@gmx.de>
Johannes Schindelin <johannes.schindelin@gmx.de> writes:
Show 12 quoted lines
> The implementation chooses *not* to DWIM the push remote if no explicit
> push remote was configured; The reason is that it is possible to DWIM this
> by using
>
> 	%(if)%(push:remotename)%(then)
> 		%(push:remotename)
> 	%(else)
> 		%(upstream:remotename)
> 	%(end)
>
> while it would be impossible to "un-DWIM" the information in case the
> caller is really only interested in explicit push remotes.
Good.
> Note: the dashless, non-CamelCased form `:remotename` follows the
> example of the `:trackshort` example.

Good. Come to think of it, aside from modifiers, the use of squashedwords like committerdate and objecttype has long been the norm in the for-each-ref atom names, so "remotename" is much more in line with other formats.

Show 23 quoted lines
> @@ -1354,16 +1371,20 @@ static void populate_value(struct ref_array_item *ref)
>  			if (refname)
>  				fill_remote_ref_details(atom, refname, branch, &v->s);
>  			continue;
> -		} else if (starts_with(name, "push")) {
> +		} else if (atom->u.remote_ref.push) {
>  			const char *branch_name;
>  			if (!skip_prefix(ref->refname, "refs/heads/",
>  					 &branch_name))
>  				continue;
>  			branch = branch_get(branch_name);
>  
> -			refname = branch_get_push(branch, NULL);
> -			if (!refname)
> -				continue;
> +			if (atom->u.remote_ref.push_remote)
> +				refname = NULL;
> +			else {
> +				refname = branch_get_push(branch, NULL);
> +				if (!refname)
> +					continue;
> +			}
>  			fill_remote_ref_details(atom, refname, branch, &v->s);

It still feels a bit strange to pass NULL refname to fill_remote_ref_details() function, but fixing it would require overhaul of this if/else if cascade, I think, so let's not worry too much about it at least for now.

Looks much better than the previous one.  Thanks.  Queued.
Previous: Junio C HamanoNext: Johannes Schindelin
Message 15 of 32 in “for-each-ref: add :remote-ref and :remote-name specifiers”
  1. 0/3 for-each-ref: add :remote-ref and :remote-name specifiersJohannes Schindelin, Oct 2, 2017
  2. 1/3 for-each-ref: let upstream/push optionally report the remote nameJohannes Schindelin, Oct 2, 2017
  3. Junio C HamanoOct 4, 2017
  4. Junio C HamanoOct 4, 2017
  5. Johannes SchindelinOct 5, 2017
  6. 2/3 for-each-ref: let upstream/push optionally report merge name.Johannes Schindelin, Oct 2, 2017
  7. Junio C HamanoOct 4, 2017
  8. Junio C HamanoOct 4, 2017
  9. Junio C HamanoOct 5, 2017
  10. 3/3 for-each-ref: test :remote-name and :remote-refJohannes Schindelin, Oct 2, 2017
  11. Junio C HamanoOct 5, 2017
  12. 0/3 for-each-ref: add :remoteref and :remotename specifiersJohannes Schindelin, Oct 5, 2017
  13. 1/3 for-each-ref: let upstream/push optionally report the remote nameJohannes Schindelin, Oct 5, 2017
  14. Junio C HamanoOct 10, 2017
  15. Junio C HamanoOct 11, 2017
  16. 2/3 for-each-ref: let upstream/push optionally remote ref nameJohannes Schindelin, Oct 5, 2017
  17. Junio C HamanoOct 6, 2017
  18. Junio C HamanoOct 11, 2017
  19. Johannes SchindelinOct 12, 2017
  20. Junio C HamanoOct 13, 2017
  21. Johannes SchindelinOct 15, 2017
  22. Kevin DaudtOct 13, 2017
  23. Junio C HamanoOct 14, 2017
  24. Johannes SchindelinOct 15, 2017
  25. Junio C HamanoOct 16, 2017
  26. Johannes SchindelinOct 16, 2017
  27. 3/3 for-each-ref: test :remotename and :remoterefJohannes Schindelin, Oct 5, 2017
  28. 0/3 for-each-ref: add :remoteref and :remotename specifiersJohannes Schindelin, Nov 7, 2017
  29. 1/3 for-each-ref: let upstream/push optionally report the remote nameJohannes Schindelin, Nov 7, 2017
  30. 2/3 for-each-ref: let upstream/push report the remote ref nameJohannes Schindelin, Nov 7, 2017
  31. 3/3 for-each-ref: test :remotename and :remoterefJohannes Schindelin, Nov 7, 2017
  32. Junio C HamanoNov 8, 2017

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.