Re: [BUG] gpg.program: '~' not expanded to home directory
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jul 12, 2025, 00:05 UTC
- Message-ID
- <xmqq8qkuxoh3.fsf@gitster.g>
- In-Reply-To
- <CAF1X4d7N1xdZt9JkVZytbEU1=7q3X_F_nqm4EG82B8-cVa7g8Q@mail.gmail.com>
Ross MacArthur <ross@macarthur.io> writes:
> `gpg.program` treats a leading ‘~’ literally, unlike other path > options such as `core.excludesfile`.
I think that is correct; I do not think gpg.program is to give a path to the program, so comparison with core.excludesfile is probably not so appropriate.
It gives a command line, e.g. "mysign --compat=gnupg", where the program "mysign" somewhere on your path can be told to behave in a way compatible to GPG when a command line option "--compat=gnupg" is given. We further append our own command line options when we invoke this command, like the "git config --help" on this variable says. When we want to verify GPG signature $signature in a file $file, for example, instead of running gpg, we would run:
mysign --compat=gnupg --verify $signature - <$file
> Expected: Git should expand ‘~’ to $HOME.
So this expectation does not quite hold true.
I wonder if letting your shell to handle the tilde expansion would make it work, though. Continuing with the example, it may look something like this, perhaps?
$ git config set gpg.program "sh -c '~/mysign --compat=gnupg \"\$@\"' -"