From: Junio C Hamano <gitster@pobox.com>
To: "Ville Skyttä" <ville.skytta@iki.fi>
Cc: git@vger.kernel.org
Subject: Re: [PATCH] completion: treat unset GIT_COMPLETION_SHOW_ALL gracefully
Date: Tue, 06 Apr 2021 15:16:21 -0700 [thread overview]
Message-ID: <xmqqo8er12kq.fsf@gitster.g> (raw)
In-Reply-To: <20210406181247.250046-1-ville.skytta@iki.fi> ("Ville Skyttä"'s message of "Tue, 6 Apr 2021 21:12:47 +0300")
Ville Skyttä <ville.skytta@iki.fi> writes:
> If not set, referencing it in nounset (set -u) mode unguarded produces
> an error.
>
> Signed-off-by: Ville Skyttä <ville.skytta@iki.fi>
> ---
> contrib/completion/git-completion.bash | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
Thanks.
$ git grep -h -o -e '\$GIT_[A-Z_]*' master -- contrib/completion/git-completion.bash
gives a few other hits.
$GIT_DIR
$GIT_COMPLETION_SHOW_ALL
$GIT_TESTING_ALL_COMMAND_LIST
$GIT_TESTING_ALL_COMMAND_LIST
$GIT_TESTING_PORCELAIN_COMMAND_LIST
Have you gone through all of these hits?
I just checked that the reference to $GIT_DIR is safe.
elif [ -n "${GIT_DIR-}" ]; then
test -d "${GIT_DIR-}" &&
__git_repo_path="$GIT_DIR"
In fact, after checking "is this non-empty?", the form used to see
"is this a directory" does not even need to be "${VAR-}".
Among the two references to GIT_TESTING_ALL_COMMAND_LIST, the first
one does not look safe to me, and that is what made me take a look
myself. It probably wants to follow the same pattern as above,
doesn't it? Or am I reading the code incorrectly and the use there
is safe?
Reference to $GIT_TESTING_PORCELAIN_COMMAND_LIST is safe, as it
follows the same "if test -n "${VAR-}"; then use "$VAR"; fi"
pattern.
So, this patch definitely looks like an improvement, but if there
are so few remaining issues, I'd prefer to see that (1) the proposed
log message explain that the patch author audited all usages of
variables and updated all "-u"-unsafe ones, and (2) the patch
actually does update all remaining problematic ones.
If I am wrong about TESTING_ALL_COMMAND_LIST, then (2) may already
be true, but then we want to describe that fact in the log message
even more. It would ensure that future developers understand that
${VAR-} constructs are no accident and we are striving to make the
script "-u"-safe.
Thanks.
> diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
> index e1a66954fe..6d77f56f92 100644
> --- a/contrib/completion/git-completion.bash
> +++ b/contrib/completion/git-completion.bash
> @@ -427,7 +427,7 @@ __gitcomp_builtin ()
>
> if [ -z "$options" ]; then
> local completion_helper
> - if [ "$GIT_COMPLETION_SHOW_ALL" = "1" ]; then
> + if [ "${GIT_COMPLETION_SHOW_ALL-}" = "1" ]; then
> completion_helper="--git-completion-helper-all"
> else
> completion_helper="--git-completion-helper"
next prev parent reply other threads:[~2021-04-06 22:16 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-06 18:12 [PATCH] completion: treat unset GIT_COMPLETION_SHOW_ALL gracefully Ville Skyttä
2021-04-06 22:16 ` Junio C Hamano [this message]
2021-04-08 6:52 ` Ville Skyttä
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=xmqqo8er12kq.fsf@gitster.g \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=ville.skytta@iki.fi \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).