From: Phillip Wood <phillip.wood123@gmail.com>
To: "D. Ben Knoble" <ben.knoble+github@gmail.com>, git@vger.kernel.org
Cc: Patrick Steinhardt <ps@pks.im>, Junio C Hamano <gitster@pobox.com>
Subject: Re: [PATCH 0/4] Drop git-exec-path from non-Git child programs
Date: Thu, 22 May 2025 14:21:38 +0100 [thread overview]
Message-ID: <aa1f960a-e7a5-4ada-84c0-fbf86a6c873f@gmail.com> (raw)
In-Reply-To: <20250520193506.95199-1-ben.knoble+github@gmail.com>
Hi Ben
On 20/05/2025 20:34, D. Ben Knoble wrote:
> This has caused trouble in the past [1] [2];
Another way of looking at this is that the trouble is caused by a script
that makes incorrect assumptions about git.
The assumption that the scripts from contrib as installed at a fixed
location relative to the git binary is false. Where they are installed
and whether they are installed at all is down to the discretion of the
distribution that you're using. Looking for "git jump" at a fixed offset
from the git binary is no more portable than looking for it in a fixed
location.
I think that the assumption that git should not change the environment
when it runs the editor is unrealistic. "git commit file" will use a
temporary index to create the commit and sets GIT_INDEX_FILE when
running the editor. This means that if the editor wants to display the
staged changes by running "git diff --cached HEAD" the diff will
accurately represent the changes being committed. Adding GIT_EXEC_PATH
to the beginning of PATH ensures that the diff will be created by the
same version of git the the user ran which avoids subtle bugs where a
sub-process of git runs a git command using an incompatible version of
git. There are several other environment variables that may be set when
running the editor such as GIT_DIR if the command is run from a linked
wortree.
To create a clean environment when opening a terminal from your editor
you can add
PATH="${PATH#$GIT_EXEC_PATH:}"
unset $(git rev-parse --local-env-vars)
to your shell setup script.
I think the first two patches are very welcome cleanups but I'm not
convinced by the rationale for patches 3 & 4.
Best Wishes
Phillip
> after attempting to help
> Git-for-Windows avoid that problem in Vim [3] by recommendation [4], it
> was suggested that upstreaming the change instead would be a better
> solution. Indeed, this should work for more uses/editors/etc.
>
> [1]: https://public-inbox.org/git/CALnO6CDtGRRav8zK2GKi1oHTZWrHFTxZNmnOWu64-ab+oY3_Lw@mail.gmail.com/
> [2]: https://benknoble.github.io/blog/2020/05/22/libexec-git-core-on-path/
> [3]: https://github.com/git-for-windows/build-extra/pull/616
> [4]: https://github.com/benknoble/Dotfiles/issues/143#issuecomment-2869525481
>
> I haven't managed to test this on Windows, so any extra eyeballs there
> are greatly appreciated. I'd also appreciate suggestions to fix the
> memory leak.
>
> Structure: patches 1 & 2 are cleanups. In particular, patch 1 is essential to
> the tests in patch 4. I don't think patch 2 is strictly needed. Patch 3
> refactors a little to make patch 4 take effect on all platforms. Patch 4 does
> the real work.
>
> D. Ben Knoble (4):
> t7005: sanitize test environment for subsequent tests
> editor: use standard strvec API to receive environment for external
> editors
> run-command: prep_childenv on all platforms
> drop git_exec_path() from non-Git commands' PATH
>
> builtin/commit.c | 2 +-
> editor.c | 10 ++++-----
> editor.h | 7 +++---
> run-command.c | 55 ++++++++++++++++++++++++++++++++++++++++++-----
> t/t7005-editor.sh | 18 +++++++++++++---
> 5 files changed, 75 insertions(+), 17 deletions(-)
>
>
> base-commit: 7a1d2bd0a596f42a8a7a68d55577967bb454fec0
next prev parent reply other threads:[~2025-05-22 13:21 UTC|newest]
Thread overview: 73+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-20 19:34 [PATCH 0/4] Drop git-exec-path from non-Git child programs D. Ben Knoble
2025-05-20 19:34 ` [PATCH 1/4] t7005: sanitize test environment for subsequent tests D. Ben Knoble
2025-05-21 7:56 ` Patrick Steinhardt
2025-05-21 13:23 ` D. Ben Knoble
2025-05-20 19:34 ` [PATCH 2/4] editor: use standard strvec API to receive environment for external editors D. Ben Knoble
2025-05-21 7:56 ` Patrick Steinhardt
2025-05-21 13:26 ` D. Ben Knoble
2025-05-21 13:34 ` Patrick Steinhardt
2025-05-21 15:20 ` Junio C Hamano
2025-05-21 15:10 ` Junio C Hamano
2025-05-20 19:34 ` [PATCH 3/4] run-command: prep_childenv on all platforms D. Ben Knoble
2025-05-21 7:56 ` Patrick Steinhardt
2025-05-21 13:07 ` Phillip Wood
2025-05-21 13:33 ` D. Ben Knoble
2025-05-20 19:34 ` [PATCH 4/4] drop git_exec_path() from non-Git commands' PATH D. Ben Knoble
2025-05-20 20:33 ` Junio C Hamano
2025-05-21 13:44 ` D. Ben Knoble
2025-05-21 8:27 ` Patrick Steinhardt
2025-05-21 13:07 ` Phillip Wood
2025-05-21 13:17 ` Patrick Steinhardt
2025-05-21 15:27 ` Phillip Wood
2025-05-26 6:34 ` Patrick Steinhardt
2025-05-21 15:50 ` Justin Tobler
2025-05-26 6:31 ` Patrick Steinhardt
2025-05-21 13:48 ` D. Ben Knoble
2025-05-21 14:47 ` Junio C Hamano
2025-05-22 13:21 ` Phillip Wood [this message]
2025-08-05 1:41 ` [PATCH 0/4] Drop git-exec-path from non-Git child programs D. Ben Knoble
2025-08-05 2:40 ` [PATCH 0/2] clean up some code around editors D. Ben Knoble
2025-08-06 10:07 ` Phillip Wood
2025-08-05 2:40 ` [PATCH 1/2] t7005: sanitize test environment for subsequent tests D. Ben Knoble
2025-08-05 2:40 ` [PATCH 2/2] editor: use standard strvec API to receive environment for external editors D. Ben Knoble
2025-08-10 16:03 ` [PATCH 0/3] clean up some code around editors D. Ben Knoble
2025-08-10 16:06 ` D. Ben Knoble
2025-08-10 16:34 ` Ben Knoble
2025-08-11 22:16 ` [PATCH v3 0/4] " D. Ben Knoble
2025-08-11 22:59 ` Ben Knoble
2025-08-12 0:16 ` Eric Sunshine
2025-08-12 16:42 ` D. Ben Knoble
2025-08-12 17:35 ` Junio C Hamano
2025-08-12 18:13 ` Eric Sunshine
2025-08-12 18:22 ` Junio C Hamano
2025-08-12 18:30 ` Eric Sunshine
2025-08-12 17:02 ` [PATCH v4 0/3] " D. Ben Knoble
2025-08-13 10:14 ` Phillip Wood
2025-08-13 15:41 ` Junio C Hamano
2025-08-13 17:36 ` D. Ben Knoble
2025-08-13 17:50 ` [PATCH v5 " D. Ben Knoble
2025-08-15 16:00 ` Phillip Wood
2025-08-13 17:50 ` [PATCH v5 1/3] t7005: use modern test style D. Ben Knoble
2025-08-13 17:50 ` [PATCH v5 2/3] t7005: stop abusing --exec-path D. Ben Knoble
2025-08-13 17:50 ` [PATCH v5 3/3] t7005: sanitize test environment for subsequent tests D. Ben Knoble
2025-08-12 17:02 ` [PATCH v4 1/3] t7005: use modern test style D. Ben Knoble
2025-08-12 17:02 ` [PATCH v4 2/3] t7005: stop abusing --exec-path D. Ben Knoble
2025-08-12 17:02 ` [PATCH v4 3/3] t7005: sanitize test environment for subsequent tests D. Ben Knoble
2025-08-11 22:16 ` [PATCH v3 1/4] t7005: use modern test style D. Ben Knoble
2025-08-11 22:16 ` [PATCH v3 2/4] t7005: stop abusing --exec-path D. Ben Knoble
2025-08-11 22:16 ` [PATCH v3 3/4] t7005: sanitize test environment for subsequent tests D. Ben Knoble
2025-08-11 22:34 ` Eric Sunshine
2025-08-12 16:40 ` D. Ben Knoble
2025-08-12 17:13 ` Eric Sunshine
2025-08-11 22:16 ` [PATCH v3 4/4] editor: use standard strvec API to receive environment for external editors D. Ben Knoble
2025-08-11 22:46 ` Eric Sunshine
2025-08-11 23:58 ` Junio C Hamano
2025-08-10 16:03 ` [PATCH 1/3] t7005: use modern test style D. Ben Knoble
2025-08-10 19:42 ` Phillip Wood
2025-08-11 10:04 ` Phillip Wood
2025-08-10 16:03 ` [PATCH 2/3] t7005: sanitize test environment for subsequent tests D. Ben Knoble
2025-08-10 19:44 ` Phillip Wood
2025-08-10 19:53 ` Ben Knoble
2025-08-10 20:58 ` Eric Sunshine
2025-08-11 9:59 ` Phillip Wood
2025-08-10 16:03 ` [PATCH 3/3] editor: use standard strvec API to receive environment for external editors D. Ben Knoble
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=aa1f960a-e7a5-4ada-84c0-fbf86a6c873f@gmail.com \
--to=phillip.wood123@gmail.com \
--cc=ben.knoble+github@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=ps@pks.im \
/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).