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

[PATCH 0/4] mingw: prevent external PERL5LIB from interfering

From
Johannes Schindelin via GitGitGadget <gitgitgadget@gmail.com>
Date
Oct 30, 2018, 18:40 UTC
Message-ID
<pull.62.git.gitgitgadget@gmail.com>

In Git for Windows, we do not support running the Perl scripts with any random Perl interpreter. Instead, we insist on using the shipped one (except for MinGit, where we do not even ship the Perl scripts, to save on space).

However, if Git is called from, say, a Perl script running in a different Perl interpreter with appropriately configured PERL5LIB, it messes with Git's ability to run its Perl scripts.

For that reason, we devised the presented method of defining a list of environment variables (via core.unsetEnvVars) that would then be unset before spawning any process, defaulting to PERL5LIB.

An alternative approach which was rejected at the time (because it interfered with the then-ongoing work to compile Git for Windows using MS Visual C++) would patch the make_environment_block() function to skip the specified environment variables before handing down the environment block to the spawned process. Currently it would interfere with the mingw-utf-8-env patch series I sent earlier today [https://public-inbox.org/git/pull.57.git.gitgitgadget@gmail.com].

While at it, this patch series also cleans up house and moves the Windows-specific core.* variable handling to compat/mingw.c rather than cluttering environment.c and config.c with things that e.g. developers on Linux do not want to care about.

Johannes Schindelin (4):
  config: rename `dummy` parameter to `cb` in git_default_config()
  Allow for platform-specific core.* config settings
  Move Windows-specific config settings into compat/mingw.c
  mingw: unset PERL5LIB by default
 Documentation/config.txt     |  6 ++++
 cache.h                      |  8 -----
 compat/mingw.c               | 58 +++++++++++++++++++++++++++++++++++-
 compat/mingw.h               |  3 ++
 config.c                     | 18 ++++-------
 environment.c                |  1 -
 git-compat-util.h            |  8 +++++
 t/t0029-core-unsetenvvars.sh | 30 +++++++++++++++++++
 8 files changed, 109 insertions(+), 23 deletions(-)
 create mode 100755 t/t0029-core-unsetenvvars.sh
base-commit: 4ede3d42dfb57f9a41ac96a1f216c62eb7566cc2
Published-As: https://github.com/gitgitgadget/git/releases/tags/pr-62%2Fdscho%2Fperl5lib-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-62/dscho/perl5lib-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/62
-- 
gitgitgadget
Next: Johannes Schindelin via GitGitGadget
Message 1 of 7 in “mingw: prevent external PERL5LIB from interfering”
  1. 0/4 mingw: prevent external PERL5LIB from interferingJohannes Schindelin via GitGitGadget, Oct 30, 2018
  2. 1/4 config: rename `dummy` parameter to `cb` in git_default_config()Johannes Schindelin via GitGitGadget, Oct 30, 2018
  3. 2/4 Allow for platform-specific core.* config settingsJohannes Schindelin via GitGitGadget, Oct 30, 2018
  4. 3/4 Move Windows-specific config settings into compat/mingw.cJohannes Schindelin via GitGitGadget, Oct 30, 2018
  5. 4/4 mingw: unset PERL5LIB by defaultJohannes Schindelin via GitGitGadget, Oct 30, 2018
  6. Junio C HamanoOct 31, 2018
  7. Johannes SchindelinOct 31, 2018

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.