All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kevin Daudt <me@ikke.info>
To: Olsson John <john.olsson@saabgroup.com>
Cc: "git@vger.kernel.org" <git@vger.kernel.org>
Subject: Re: Error handling when giving empty command line arguments
Date: Wed, 25 May 2022 06:41:35 +0200	[thread overview]
Message-ID: <Yo2zfxP4hII+iwfb@alpha> (raw)
In-Reply-To: <dc08a8ee5ed64850872fd6529d1462e1@saabgroup.com>

On Tue, May 24, 2022 at 01:25:43PM +0000, Olsson John wrote:
> I have so far only seen this behavior with 'git fetch' command, but it might be more general depending on how command line parsing is implemented.
> 
> In a Bash script I had something similar to (but more complicated than what I show below)
> 
>   git fetch "${force}"
> 
> where $force is either an empty string or '--force'. Due to that you usually want to expand all variables within double quotes when writing Bash scripts I did not realize that I had made a mistake here. Instead I got this strange error message and spent a couple of hours chasing it
> 
>   fatal: no path specified; see 'git help pull' for valid url syntax
> 
> This problem eventually turned out to be of the trivial kind once I realized why I got it, and also very simple to reproduce. Just do
>   $ git fetch ""
>   fatal: no path specified; see 'git help pull' for valid url syntax
>   $
> 
> That is, 'git fetch' does not check if the given string is an empty string before writing the error message. The empty string is completely unrelated to any path/URI and in this case it was not that helpful.
> 
> What do you say? Wouldn't it be better with a more specific error message when an option value/argument is an empty string? Or should perhaps empty strings be ignored by the git commands?
> 
> 
> /John
> 

Hello John,

You are running into this issue because you use "$(force}" instead of
${force}. In the latter case, if $force is empty, the shell will not
pass an empty string as an argument to git.

This does mean that it is subject to word splitting, but that can be an
advantage as well if you decide you need more arguments than just
'--force'. You should only use that in case you control what $force
contains.

Hope this helps, 
Kevin

  parent reply	other threads:[~2022-05-25  4:49 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-24 13:25 Error handling when giving empty command line arguments Olsson John
2022-05-24 22:51 ` Junio C Hamano
2022-05-25  7:32   ` [EXTERNAL] " Olsson John
2022-05-25 15:46     ` Junio C Hamano
2022-05-25  4:41 ` Kevin Daudt [this message]
2022-05-25  7:03   ` Olsson John

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=Yo2zfxP4hII+iwfb@alpha \
    --to=me@ikke.info \
    --cc=git@vger.kernel.org \
    --cc=john.olsson@saabgroup.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.