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

Re: [PATCH 1/1] sequencer: fix empty commit check when amending

From
PWPhillip Wood <phillip.wood123@gmail.com>
Date
Nov 22, 2019, 11:09 UTC
Message-ID
<b314c0b1-0e01-c8ea-bef2-7d1191b9080a@gmail.com>
In-Reply-To
<xmqqblt44d3h.fsf@gitster-ct.c.googlers.com>
Hi Junio
(sorry dscho I forgot to CC you on this patch)
On 22/11/2019 06:52, Junio C Hamano wrote:
Show 8 quoted lines
> "Phillip Wood via GitGitGadget" <gitgitgadget@gmail.com> writes:
> 
>> +	if (!(flags & ALLOW_EMPTY)) {
>> +		struct commit *first_parent = current_head;
> 
> I would have used first_parent_tree variable instead here.  That
> way, you did not have to have an overlong ternary expression down
> there, I expect.

But current_head may be NULL so we'd end up with the equivalent of the ternary expression up here or an if/else to handle it. I thought it was clearer to find the parent we want to use and then get the tree from it.

Show 25 quoted lines
> 
>> +		if (flags & AMEND_MSG) {
>> +			if (current_head->parents) {
>> +				first_parent = current_head->parents->item;
>> +				if (repo_parse_commit(r, first_parent)) {
>> +					res = error(_("could not parse HEAD commit"));
>> +					goto out;
>> +				}
>> +			} else {
>> +				first_parent = NULL;
>> +			}
>> +		}
>> +		if (oideq(first_parent ? get_commit_tree_oid(first_parent) :
>> +					 the_hash_algo->empty_tree, &tree)) {
> 
> Style.  It often makes the code much easier to read when you strive
> to break lines at the boundary of larger syntactic units.  In this
> (A ? B : C, D) parameter list, ternary A ? B : C binds much tighter
> than the comma after it, so if you are breaking line inside it, you
> should break line after the comma, too, i.e.
> 
> 	oideq(first_parent
> 	      ? get_commit_tree_oid(first_parent)
> 	      : the_hash_algo->empty_tree,
> 	      &tree)
I agree that's a clearer way of writing it. I'll re-roll with that
Best Wishes
Phillip
Show 9 quoted lines
> to avoid appearing if C and D have closer relationship than B and C,
> which your version gives.
> 
> But I hope that it becomes a moot point, if we computed first_parent_tree
> inside the new "if (flags & AMEND_MSG)" block to leave this oideq()
> just
> 
> 	if (oideq(first_parent_tree, &tree)) {
> 
Previous: Junio C HamanoNext: Phillip Wood via GitGitGadget
Message 6 of 19 in “sequencer: fix empty commit check when amending”
  1. 0/1 sequencer: fix empty commit check when amendingPhillip Wood via GitGitGadget, Nov 21, 2019
  2. 1/1 sequencer: fix empty commit check when amendingPhillip Wood via GitGitGadget, Nov 21, 2019
  3. Junio C HamanoNov 22, 2019
  4. Phillip WoodNov 22, 2019
  5. Junio C HamanoNov 22, 2019
  6. Phillip WoodNov 22, 2019
  7. 0/1 sequencer: fix empty commit check when amendingPhillip Wood via GitGitGadget, Nov 22, 2019
  8. 1/1 sequencer: fix empty commit check when amendingPhillip Wood via GitGitGadget, Nov 22, 2019
  9. Junio C HamanoNov 23, 2019
  10. Junio C HamanoNov 23, 2019
  11. Phillip WoodNov 23, 2019
  12. Phillip WoodNov 24, 2019
  13. Junio C HamanoNov 25, 2019
  14. Phillip WoodNov 25, 2019
  15. Johannes SchindelinNov 25, 2019
  16. Eric SunshineNov 25, 2019
  17. Johannes SchindelinNov 25, 2019
  18. Phillip WoodNov 25, 2019
  19. Junio C HamanoNov 26, 2019

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.