From: Luke Shumaker <lukeshu@lukeshu.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: Luke Shumaker <lukeshu@lukeshu.com>,
"Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com>,
git@vger.kernel.org, Luke Shumaker <lukeshu@datawire.io>,
Johannes Schindelin <johannes.schindelin@gmx.de>
Subject: Re: [PATCH 1/2] subtree: fix the GIT_EXEC_PATH sanity check to work on Windows
Date: Thu, 10 Jun 2021 22:31:09 -0600 [thread overview]
Message-ID: <877dj16n02.wl-lukeshu@lukeshu.com> (raw)
In-Reply-To: <xmqqim2l5ghj.fsf@gitster.g>
On Thu, 10 Jun 2021 19:37:12 -0600,
Junio C Hamano wrote:
> Luke Shumaker <lukeshu@lukeshu.com> writes:
>
> >> +if test -z "$GIT_EXEC_PATH" || {
> >> + test "${PATH#"${GIT_EXEC_PATH}:"}" = "$PATH" && {
> >> + # On Windows, PATH might be Unix-style, GIT_EXEC_PATH not
> >> + ! type -p cygpath >/dev/null 2>&1 ||
> >> + test "${PATH#$(cygpath -au "$GIT_EXEC_PATH"):}" = "$PATH"
> >
> > Nit: That should have a couple more `"` in it:
> >
> > test "${PATH#"$(cygpath -au "$GIT_EXEC_PATH"):"}" = "$PATH"
> >
> > But no need to re-roll for just that.
>
> Does the nit purely cosmetic, or does it affect correctness? I'd
> assume the former, as it would not make sense to say "no need to
> reroll" if leaving it as-is would mean a breakage, but trying to
> make sure.
>
> Thanks.
Quoting in that shell construct can in theory affect correctness, but
my intuition was that it can't affect this specific case. However,
upon thinking about it a bit more, I realize that I was mistaken. If
the git exec path contains a shell glob that is not self-matching,
then it will break in that `git subtree` will refuse to run even
though the install is fine.
For instance,
GIT_EXEC_PATH => \Home\Tricky[x]User\git-core
PATH => /Home/Tricky[x]User/git-core:/bin
I'd think that this type of thing would be unlikely to happen in the
wild, but yeah, it needs to be fixed. So a reroll is needed.
It is also broken in the other direction (it might run even though the
install is broken), but only in situations that I don't think I
actually care about. It would happen if the glob is self-matching,
your GIT_EXEC_PATH and PATH disagree, and the glob matches PATH. The
point of the check is to look for ways that installs are actually
accidentally broken in the wild, I'm pretty sure the only way all 3 of
those things can happen together is if you're actively trying to break
it. And if you're actively trying to break a shell script, you can do
so a lot simpler by just setting PATH to something silly.
--
Happy hacking,
~ Luke Shumaker
next prev parent reply other threads:[~2021-06-11 4:31 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-06-10 9:13 [PATCH 0/2] Fix git subtree on Windows Johannes Schindelin via GitGitGadget
2021-06-10 9:13 ` [PATCH 1/2] subtree: fix the GIT_EXEC_PATH sanity check to work " Johannes Schindelin via GitGitGadget
2021-06-11 0:40 ` Luke Shumaker
2021-06-11 1:37 ` Junio C Hamano
2021-06-11 4:31 ` Luke Shumaker [this message]
2021-06-11 10:19 ` Johannes Schindelin
2021-06-11 13:41 ` Luke Shumaker
2021-06-14 11:56 ` Johannes Schindelin
2021-06-15 2:33 ` Junio C Hamano
2021-06-15 10:56 ` Jeff King
2021-06-15 11:05 ` Bagas Sanjaya
2021-06-15 11:18 ` Jeff King
2021-06-15 11:27 ` Johannes Schindelin
2021-06-16 0:52 ` Junio C Hamano
2021-06-16 7:49 ` Jeff King
2021-06-10 9:13 ` [PATCH 2/2] subtree: fix assumption about the directory separator Johannes Schindelin via GitGitGadget
2021-06-11 1:02 ` Luke Shumaker
2021-06-11 10:35 ` Johannes Schindelin
2021-06-11 0:58 ` [PATCH 0/2] Fix git subtree on Windows Luke Shumaker
2021-06-11 10:30 ` Johannes Schindelin
2021-06-11 13:46 ` Luke Shumaker
2021-06-11 15:50 ` Felipe Contreras
2021-06-12 2:58 ` Luke Shumaker
2021-06-14 12:41 ` [PATCH v2 " Johannes Schindelin via GitGitGadget
2021-06-14 12:41 ` [PATCH v2 1/2] subtree: fix the GIT_EXEC_PATH sanity check to work " Johannes Schindelin via GitGitGadget
2021-06-15 2:37 ` Junio C Hamano
2021-06-14 12:41 ` [PATCH v2 2/2] subtree: fix assumption about the directory separator Johannes Schindelin via GitGitGadget
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=877dj16n02.wl-lukeshu@lukeshu.com \
--to=lukeshu@lukeshu.com \
--cc=git@vger.kernel.org \
--cc=gitgitgadget@gmail.com \
--cc=gitster@pobox.com \
--cc=johannes.schindelin@gmx.de \
--cc=lukeshu@datawire.io \
/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.