All of lore.kernel.org
 help / color / mirror / Atom feed
From: Phillip Wood <phillip.wood123@gmail.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org, 重田一聖 <kazumasa.shigeta@kanamei.com>
Subject: Re: [PATCH v3 1/7] stash: use an enum for create status
Date: Thu, 22 Oct 2026 16:57:32 +0100	[thread overview]
Message-ID: <7ffce2cb-07de-4bd3-a9b4-81fd27b920f5@gmail.com> (raw)
In-Reply-To: <xmqq5wyvsi2j.fsf@gitster.g>

On 21/10/2026 07:07, Junio C Hamano wrote:
> Phillip Wood <phillip.wood123@gmail.com> writes:
> 
>> +enum create_result {
>> +	CREATE_ERROR = -1,
>> +	CREATE_SUCCESS,
>> +	/* No changes were stashed */
>> +	CREATE_EMPTY,
>> +};
> 
> SUCCESS immediatly following ERROR that is explicitly defined to be
> (-1) may qualify as explicitly defined to be 0, but personally I
> probably prefer to be extra explicit here, like
> 
> 	CREATE_ERROR = -1,
> 	CREATE_SUCCESS = 0,
> 
> even though this is not worth rerolling the series for.

I can do that, though we really shouldn't be relying on the value for 
any of the member other than CREATE_ERROR which we want to match the 
return value of error(...).

> 
>> +static enum create_result stash_staged(struct stash_info *info,
>> +				  struct strbuf *out_patch, int quiet)
>>   {
>> -	int ret = 0;
>> +	enum create_result ret = 0;
> 
> Not CREATE_SUCCESS?  This can be returned if various checks in the
> function assigns different values to this variable, right?

Yes, I forgot to convert the initializer when I changed the type, will fix.

>>   	if (patch_mode) {
>>   		ret = stash_patch(info, ps, patch, quiet, interactive_opts);
>> -		if (ret < 0) {
>> +		if (ret == CREATE_ERROR) {
>>   			if (!quiet)
>>   				fprintf_ln(stderr, _("Cannot save the current "
>>   						     "worktree state"));
>>   			goto done;
>> -		} else if (ret > 0) {
>> +		} else if (ret != CREATE_SUCCESS) {
>>   			goto done;
>>   		}
> 
> I wonder if switch/case is easier to read for these users of these
> enum return values.  Some check explicitly against CREATE_ERROR
> (like the one above), some treat anything other than CREATE_SUCCESS
> as undesirable, etc.

I've had a play with this and I think the enum is better here

>>   	} else if (only_staged) {
>>   		ret = stash_staged(info, patch, quiet);
>> -		if (ret < 0) {
>> +		if (ret == CREATE_ERROR) {
>>   			if (!quiet)
>>   				fprintf_ln(stderr, _("Cannot save the current "
>>   						     "staged state"));
>>   			goto done;
>> -		} else if (ret > 0) {
>> +		} else if (ret != CREATE_SUCCESS) {
>>   			goto done;
>>   		}
>>   	} else {
> 
> Ditto.

and here

> 
>> @@ -1660,12 +1667,13 @@ static int create_stash(int argc, const char **argv, const char *prefix UNUSED,
>>   
>>   	ret = do_create_stash(&ps, &stash_msg_buf, 0, 0, NULL, 0, &info,
>>   			      NULL, 0);
>> -	if (!ret)
>> +	if (ret == CREATE_SUCCESS)
>>   		printf_ln("%s", oid_to_hex(&info.w_commit));
>>   
>>   	free_stash_info(&info);
>>   	strbuf_release(&stash_msg_buf);
>> -	return ret;
>> +	/* Do not return an error if there are no changes */
>> +	return ret == CREATE_ERROR ? -1 : 0;
>>   }
> 
> Ditto.

but here we're checking for a single value, so using a switch seems like 
overkill.

I'll try and push out a new version tomorrow

Thanks

Phillip


  reply	other threads:[~2026-10-22 15:57 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-05 16:35 [PATCH 0/2] stash: stop checking for changes twice Phillip Wood
2026-10-05 16:35 ` [PATCH 1/2] stash create: remove duplicate changes detection Phillip Wood
2026-10-06 12:44   ` Junio C Hamano
2026-10-07 13:49     ` Phillip Wood
2026-10-05 16:35 ` [PATCH 2/2] stash push: " Phillip Wood
2026-10-06 14:27   ` Junio C Hamano
2026-10-07 13:46     ` Phillip Wood
2026-10-07 17:15       ` Junio C Hamano
2026-10-08 13:35         ` Phillip Wood
2026-10-14 15:40 ` [PATCH v2 0/7] stash creation: avoid unecessary index loads and refreshes Phillip Wood
2026-10-14 15:40   ` [PATCH v2 1/7] stash: use an enum for create status Phillip Wood
2026-10-14 15:40   ` [PATCH v2 2/7] stash create: remove duplicate changes detection Phillip Wood
2026-10-14 15:40   ` [PATCH v2 3/7] stash push: " Phillip Wood
2026-10-14 15:40   ` [PATCH v2 4/7] stash push: avoid duplicate calls to preload_index() Phillip Wood
2026-10-14 18:09     ` Junio C Hamano
2026-10-14 15:40   ` [PATCH v2 5/7] stash create: rework temporary index creation Phillip Wood
2026-10-14 18:16     ` Junio C Hamano
2026-10-20 14:54       ` Phillip Wood
2026-10-14 15:40   ` [PATCH v2 6/7] stash create: remove unnecessary index load and refresh Phillip Wood
2026-10-14 18:21     ` Junio C Hamano
2026-10-14 15:40   ` [PATCH v2 7/7] stash: simplify reset_tree() function signature Phillip Wood
2026-10-20 15:20 ` [PATCH v3 0/7] stash creation: avoid unecessary index loads and refreshes Phillip Wood
2026-10-20 15:20   ` [PATCH v3 1/7] stash: use an enum for create status Phillip Wood
2026-10-21  6:07     ` Junio C Hamano
2026-10-22 15:57       ` Phillip Wood [this message]
2026-10-22 17:01         ` Junio C Hamano
2026-10-22 18:33           ` Phillip Wood
2026-10-20 15:20   ` [PATCH v3 2/7] stash create: remove duplicate changes detection Phillip Wood
2026-10-20 15:20   ` [PATCH v3 3/7] stash push: " Phillip Wood
2026-10-20 15:20   ` [PATCH v3 4/7] stash push: avoid duplicate calls to preload_index() Phillip Wood
2026-10-20 15:20   ` [PATCH v3 5/7] stash create: rework temporary index creation Phillip Wood
2026-10-20 22:07     ` Junio C Hamano
2026-10-20 15:20   ` [PATCH v3 6/7] stash create: remove unnecessary index load and refresh Phillip Wood
2026-10-20 15:20   ` [PATCH v3 7/7] stash: simplify reset_tree() function signature Phillip Wood
2026-10-21  0:07   ` [PATCH v3 0/7] stash creation: avoid unecessary index loads and refreshes Junio C Hamano
2026-10-23 15:03 ` [PATCH v4 " Phillip Wood
2026-10-23 15:03   ` [PATCH v4 1/7] stash: use an enum for create status Phillip Wood
2026-10-23 15:03   ` [PATCH v4 2/7] stash create: remove duplicate changes detection Phillip Wood
2026-10-23 15:03   ` [PATCH v4 3/7] stash push: " Phillip Wood
2026-10-23 15:03   ` [PATCH v4 4/7] stash push: avoid duplicate calls to preload_index() Phillip Wood
2026-10-23 15:03   ` [PATCH v4 5/7] stash create: rework temporary index creation Phillip Wood
2026-10-23 15:03   ` [PATCH v4 6/7] stash create: remove unnecessary index load and refresh Phillip Wood
2026-10-23 15:03   ` [PATCH v4 7/7] stash: simplify reset_tree() function signature Phillip Wood

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7ffce2cb-07de-4bd3-a9b4-81fd27b920f5@gmail.com \
    --to=phillip.wood123@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=kazumasa.shigeta@kanamei.com \
    --cc=phillip.wood@dunelm.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.