From: Junio C Hamano <gitster@pobox.com>
To: "Philippe Blain via GitGitGadget" <gitgitgadget@gmail.com>
Cc: git@vger.kernel.org, Seth House <seth@eseth.com>,
David Aguilar <davvid@gmail.com>, Johannes Sixt <j6t@kdbg.org>,
Philippe Blain <levraiphilippeblain@gmail.com>
Subject: Re: [PATCH 3/5] git-mergetool--lib.sh: add error message in 'setup_user_tool'
Date: Wed, 13 Nov 2024 10:48:38 +0900 [thread overview]
Message-ID: <xmqqwmh729ah.fsf@gitster.g> (raw)
In-Reply-To: <79c3a6ffe8f2872755f76340e2d5ae1a94885456.1731459128.git.gitgitgadget@gmail.com> (Philippe Blain via GitGitGadget's message of "Wed, 13 Nov 2024 00:52:06 +0000")
"Philippe Blain via GitGitGadget" <gitgitgadget@gmail.com> writes:
> 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.
> 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?
> 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.
> 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]?
next prev parent reply other threads:[~2024-11-13 1:48 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-13 0:52 [PATCH 0/5] git-mergetool: improve error code paths and messages Philippe Blain via GitGitGadget
2024-11-13 0:52 ` [PATCH 1/5] completion: complete '--tool-help' in 'git mergetool' Philippe Blain via GitGitGadget
2024-11-13 0:52 ` [PATCH 2/5] git-mergetool--lib.sh: use TOOL_MODE when erroring about unknown tool Philippe Blain via GitGitGadget
2024-11-13 1:27 ` Junio C Hamano
2024-11-22 18:57 ` Philippe Blain
2024-11-22 19:32 ` Philippe Blain
2024-11-13 0:52 ` [PATCH 3/5] git-mergetool--lib.sh: add error message in 'setup_user_tool' Philippe Blain via GitGitGadget
2024-11-13 1:48 ` Junio C Hamano [this message]
2024-11-22 19:02 ` Philippe Blain
2024-11-13 0:52 ` [PATCH 4/5] git-mergetool--lib.sh: add error message for unknown tool variant Philippe Blain via GitGitGadget
2024-11-13 2:01 ` Junio C Hamano
2024-11-22 19:08 ` Philippe Blain
2024-11-13 0:52 ` [PATCH 5/5] git-difftool--helper.sh: exit upon initialize_merge_tool errors Philippe Blain via GitGitGadget
2024-11-22 19:50 ` [PATCH v2 0/5] git-mergetool: improve error code paths and messages Philippe Blain via GitGitGadget
2024-11-22 19:50 ` [PATCH v2 1/5] completion: complete '--tool-help' in 'git mergetool' Philippe Blain via GitGitGadget
2024-11-22 19:50 ` [PATCH v2 2/5] git-mergetool--lib.sh: use TOOL_MODE when erroring about unknown tool Philippe Blain via GitGitGadget
2024-11-22 19:50 ` [PATCH v2 3/5] git-mergetool--lib.sh: add error message if 'setup_user_tool' fails Philippe Blain via GitGitGadget
2024-11-22 19:50 ` [PATCH v2 4/5] git-mergetool--lib.sh: add error message for unknown tool variant Philippe Blain via GitGitGadget
2024-11-22 19:50 ` [PATCH v2 5/5] git-difftool--helper.sh: exit upon initialize_merge_tool errors Philippe Blain via GitGitGadget
2024-11-26 4:33 ` [PATCH v2 0/5] git-mergetool: improve error code paths and messages Junio C Hamano
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=xmqqwmh729ah.fsf@gitster.g \
--to=gitster@pobox.com \
--cc=davvid@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitgitgadget@gmail.com \
--cc=j6t@kdbg.org \
--cc=levraiphilippeblain@gmail.com \
--cc=seth@eseth.com \
/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.