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

Re: [PATCH 3/5] git-mergetool--lib.sh: add error message in 'setup_user_tool'

From
Junio C Hamano <gitster@pobox.com>
Date
Nov 13, 2024, 01:48 UTC
Message-ID
<xmqqwmh729ah.fsf@gitster.g>
In-Reply-To
<79c3a6ffe8f2872755f76340e2d5ae1a94885456.1731459128.git.gitgitgadget@gmail.com>
"Philippe Blain via GitGitGadget" <gitgitgadget@gmail.com> writes:
Show 6 quoted lines
>  valid_tool () {
> -	setup_tool "$1" && return 0
> +	setup_tool "$1" 2>/dev/null && return 0
>  	cmd=$(get_merge_tool_cmd "$1")
>  	test -n "$cmd"
>  }

As we are checking if a tool is valid, it is normal for setup_tool to fail when we are checking is not valid (aka "fails to get set up"). There is no need to show an error message for such a failure, as the callers of valid_tool would do so if they wish. OK.

Show 8 quoted lines
>  setup_user_tool () {
>  	merge_tool_cmd=$(get_merge_tool_cmd "$tool")
> -	test -n "$merge_tool_cmd" || return 1
> +	if test -z "$merge_tool_cmd"
> +	then
> +		echo >&2 "error: ${TOOL_MODE}tool.$tool.cmd not set for tool '$tool'"
> +		return 1
> +	fi

There are only two callers of setup_user_tool, and one of them squelches this message by sending it to /dev/null. The error message composed here does not use anything that is unique to the function (in other words, $tool and ${TOOL_MODE} are available to its callers).

I wonder if it is a better design to leave this one as-is, and instead show the error message from the other caller of setup_user_tool that does not squelch the message? Are we planning to add more callers of this function that want to show the same message?

Show 8 quoted lines
>  	diff_cmd () {
>  		( eval $merge_tool_cmd )
> @@ -255,7 +259,7 @@ setup_tool () {
>  
>  	# Now let the user override the default command for the tool.  If
>  	# they have not done so then this will return 1 which we ignore.
> -	setup_user_tool
> +	setup_user_tool 2>/dev/null

If we did that, then this change can be dropped. Instead, a few lines above this hunk, we can give the error message ourselves from this setup_tool function.

Show 17 quoted lines
>  	if ! list_tool_variants | grep -q "^$tool$"
>  	then
> diff --git a/t/t7610-mergetool.sh b/t/t7610-mergetool.sh
> index 22b3a85b3e9..82a88107850 100755
> --- a/t/t7610-mergetool.sh
> +++ b/t/t7610-mergetool.sh
> @@ -898,4 +898,12 @@ test_expect_success 'mergetool with guiDefault' '
>  	git commit -m "branch1 resolved with mergetool"
>  '
>  
> +test_expect_success 'mergetool with non-existent tool' '
> +	test_when_finished "git reset --hard" &&
> +	git checkout -b test$test_count branch1 &&
> +	test_must_fail git merge main &&
> +	yes "" | test_must_fail git mergetool --tool=absent >out 2>&1 &&
> +	test_grep -i "not set for tool" out
> +'

Why "-i"? I do not offhand see the reason why we want to be loose here.

The "${TOOL_MODE}tool" part may also want to be verified, perhaps, which was related to the topic of the fix in [2/5]?

Previous: Philippe Blain via GitGitGadgetNext: Philippe Blain
Message 8 of 20 in “git-mergetool: improve error code paths and messages”
  1. 0/5 git-mergetool: improve error code paths and messagesPhilippe Blain via GitGitGadget, Nov 13, 2024
  2. 1/5 completion: complete '--tool-help' in 'git mergetool'Philippe Blain via GitGitGadget, Nov 13, 2024
  3. 2/5 git-mergetool--lib.sh: use TOOL_MODE when erroring about unknown toolPhilippe Blain via GitGitGadget, Nov 13, 2024
  4. Junio C HamanoNov 13, 2024
  5. Philippe BlainNov 22, 2024
  6. Philippe BlainNov 22, 2024
  7. 3/5 git-mergetool--lib.sh: add error message in 'setup_user_tool'Philippe Blain via GitGitGadget, Nov 13, 2024
  8. Junio C HamanoNov 13, 2024
  9. Philippe BlainNov 22, 2024
  10. 4/5 git-mergetool--lib.sh: add error message for unknown tool variantPhilippe Blain via GitGitGadget, Nov 13, 2024
  11. Junio C HamanoNov 13, 2024
  12. Philippe BlainNov 22, 2024
  13. 5/5 git-difftool--helper.sh: exit upon initialize_merge_tool errorsPhilippe Blain via GitGitGadget, Nov 13, 2024
  14. 0/5 git-mergetool: improve error code paths and messagesPhilippe Blain via GitGitGadget, Nov 22, 2024
  15. 1/5 completion: complete '--tool-help' in 'git mergetool'Philippe Blain via GitGitGadget, Nov 22, 2024
  16. 2/5 git-mergetool--lib.sh: use TOOL_MODE when erroring about unknown toolPhilippe Blain via GitGitGadget, Nov 22, 2024
  17. 3/5 git-mergetool--lib.sh: add error message if 'setup_user_tool' failsPhilippe Blain via GitGitGadget, Nov 22, 2024
  18. 4/5 git-mergetool--lib.sh: add error message for unknown tool variantPhilippe Blain via GitGitGadget, Nov 22, 2024
  19. 5/5 git-difftool--helper.sh: exit upon initialize_merge_tool errorsPhilippe Blain via GitGitGadget, Nov 22, 2024
  20. Junio C HamanoNov 26, 2024

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.