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

Re: [PATCH] doc: option value may be separate for valid reasons

From
Eric Sunshine <sunshine@sunshineco.com>
Date
Nov 24, 2024, 23:54 UTC
Message-ID
<CAPig+cT_uB-mBwRh_A-HvpO8QCjv_Rw3-6s4gV=BCwYmSGcctg@mail.gmail.com>
In-Reply-To
<xmqqjzct9db8.fsf@gitster.g>
On Sun, Nov 24, 2024 at 4:44 AM Junio C Hamano <gitster@pobox.com> wrote:
Show 36 quoted lines
> Even though `git help cli` recommends users to prefer using
> "--option=value" over "--option value", there can be reasons why
> giving them separately is a good idea.  One reason is that shells do
> not perform tilde expansion for `--option=~/path/name` but they
> expand `--options ~/path/name` just fine.
>
> This is not a problem for many options whose option parsing is
> properly written using OPT_FILENAME(), because the value given to
> OPT_FILENAME() is tilde-expanded internally by us, but some commands
> take a pathname as a mere string, which needs this trick to have the
> shell help us.
>
> I think the reason we originally decided to recommend the stuck form
> was because an option that takes an optional value requires you to
> use it in the stuck form, and it is one less thing for users to
> worry about if they get into the habit to always use the stuck form.
> But we should be discouraging ourselves from adding an option with
> an optional value in the first place, and we might want to weaken
> the current recommendation.
>
> In any case, let's describe this one case where it is necessary to
> use the separate form, with an example.
>
> Signed-off-by: Junio C Hamano <gitster@pobox.com>
> ---
> diff --git c/Documentation/gitcli.txt w/Documentation/gitcli.txt
> @@ -88,10 +88,20 @@ scripting Git:
> + * Despite the above suggestion, when Arg is a path relative to the
> +   home directory of a user, e.g. ~/directory/file or ~u/d/f, you
> +   may want to use the separate form, e.g. `git credential-store
> +   --file ~/sec/rit`, not `git credential-store --file=~/sec/rit`.
> +   The shell will expand `~/` in the former to your home directory,
> +   but most shells keep the tilde in the latter.  Some of our
> +   commands know how to tilde-expand the option value internally,
> +   but not all.  The `--file` option of `credential-store` is an
> +   example that it needs shell's help to tilde-expand its value.

I'm not sure the final sentence adds any value considering that credential-store was already mentioned in the example earlier in the paragraph, though I suppose it doesn't hurt to keep the sentence.

Show 11 quoted lines
> diff --git c/Documentation/gitcredentials.txt w/Documentation/gitcredentials.txt
> @@ -240,10 +240,15 @@ Here are some example specifications:
>  # the arguments are parsed by the shell, so use shell
>  # quoting if necessary
>  [credential]
>         helper = "foo --bar='whitespace arg'"
>
> +# store helper (discouraged) with custom location for the db file;
> +# tilde expansion often requires the filename as a separate argument.
> +[credential]
> +       helper = "store --file ~/.git-secret.txt"

In the context of the commit message, I understand why you added the comment above this example, but as a mere user without having that context, I think the part starting "tilde expansion..." would confuse me more than help. Perhaps being a bit more explicit might help:

    # use `--file ~/path` rather than `--file=~/path` to allow the
    # shell to expand tilde to the home directory
Previous: Junio C HamanoNext: Junio C Hamano
Message 2 of 6 in “doc: option value may be separate for valid reasons”
  1. doc: option value may be separate for valid reasonsJunio C Hamano, Nov 24, 2024
  2. Eric SunshineNov 24, 2024
  3. Junio C HamanoNov 25, 2024
  4. doc: option value may be separate for valid reasonsJunio C Hamano, Nov 25, 2024
  5. Eric SunshineNov 25, 2024
  6. Junio C HamanoNov 25, 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.