Subject: Re: [PATCH] imap-send: improve error messages for missing configuration

From: Junio C Hamano <[email-masked]>
Date: Thu, 19 Jun 2025 17:58:32 -0700

"Jörg Thalheim" <[email-masked]> writes:

> The error message 'no imap store specified' was confusing because
> it referred to 'store' when the actual missing configuration was
> 'imap.folder'. Similarly, the host error message provided no
> guidance on how to fix the issue.
>
> Improve both error messages to:
> - Clearly state what configuration is missing
> - Provide hints showing the exact git config commands needed
> - Include examples of typical values
>
> This helps users quickly understand and resolve configuration issues
> when using git imap-send.
>
> Signed-off-by: Jörg Thalheim <[email-masked]>
> ---
>  imap-send.c | 8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)

It is curious that you are sending usability improvement patches to
imap-send, which I was recently told to be completely broken wrt the
use of imap.folder.  Is the claim I heard that it is totally broken
not true after all, I wonder?

In any case, there are some patches in flight that rewrites the
parts of the program this patch wants to update (which addresses
that "completely broken" part and makes the program usable again).

Can you fix the messages on top of that work?  By doing

 $ git checkout --detach origin/master
 $ git merge --no-ff -m 'Merge ag/imap-send-resurrection' adbc0b5d
 $ git checkout -b jt/imap-send-error-message-fix

you can prepare the ground and then fix the messages there.

You might want to consider using the advise() API to add the hints,
and please make that a separate patch on top of the "What's imap
store?  We call it a folder!" patch.

Thanks.

> diff --git a/imap-send.c b/imap-send.c
> index 2e812f5a6e..a2d6f6d3f6 100644
> --- a/imap-send.c
> +++ b/imap-send.c
> @@ -1539,13 +1539,17 @@ int cmd_main(int argc, const char **argv)
>  		server.port = server.use_ssl ? 993 : 143;
>  
>  	if (!server.folder) {
> -		fprintf(stderr, "no imap store specified\n");
> +		fprintf(stderr, "error: no imap folder specified\n");
> +		fprintf(stderr, "hint: set the target folder with 'git config imap.folder <folder>'\n");
> +		fprintf(stderr, "      (e.g., 'git config imap.folder Drafts')\n");
>  		ret = 1;
>  		goto out;
>  	}
>  	if (!server.host) {
>  		if (!server.tunnel) {
> -			fprintf(stderr, "no imap host specified\n");
> +			fprintf(stderr, "error: no imap host specified\n");
> +			fprintf(stderr, "hint: set the imap host with 'git config imap.host <host>'\n");
> +			fprintf(stderr, "      (e.g., 'git config imap.host imaps://imap.example.com')\n");
>  			ret = 1;
>  			goto out;
>  		}