]> git.ipfire.org Git - thirdparty/git.git/commitdiff
safe.directory: document and check that it's ignored in the environment
authorSZEDER Gábor <szeder.dev@gmail.com>
Wed, 27 Apr 2022 17:06:49 +0000 (19:06 +0200)
committerJunio C Hamano <gitster@pobox.com>
Wed, 27 Apr 2022 20:30:56 +0000 (13:30 -0700)
The description of 'safe.directory' mentions that it's respected in
the system and global configs, and ignored in the repository config
and on the command line, but it doesn't mention whether it's respected
or ignored when specified via environment variables (nor does the
commit message adding 'safe.directory' [1]).

Clarify that 'safe.directory' is ignored when specified in the
environment, and add tests to make sure that it remains so.

[1] 8959555cee (setup_git_directory(): add an owner check for the
                top-level directory, 2022-03-02)

Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/config/safe.txt
t/t0033-safe-directory.sh

index 6d764fe0ccf3a87dbfeb34da03b7e1dcb380ac99..ae0e2e3bdb479b42bf40f52396ea82b6c6f0bd38 100644 (file)
@@ -13,8 +13,8 @@ override any such directories specified in the system config), add a
 `safe.directory` entry with an empty value.
 +
 This config setting is only respected when specified in a system or global
-config, not when it is specified in a repository config or via the command
-line option `-c safe.directory=<path>`.
+config, not when it is specified in a repository config, via the command
+line option `-c safe.directory=<path>`, or in environment variables.
 +
 The value of this setting is interpolated, i.e. `~/<path>` expands to a
 path relative to the home directory and `%(prefix)/<path>` expands to a
index 82dac0eb93a58509537567c8e0ea5c2ec1441d37..238b25f91a34d745016045a9570063086a5eec1f 100755 (executable)
@@ -21,6 +21,21 @@ test_expect_success 'ignoring safe.directory on the command line' '
        grep "unsafe repository" err
 '
 
+test_expect_success 'ignoring safe.directory in the environment' '
+       test_must_fail env GIT_CONFIG_COUNT=1 \
+               GIT_CONFIG_KEY_0="safe.directory" \
+               GIT_CONFIG_VALUE_0="$(pwd)" \
+               git status 2>err &&
+       grep "unsafe repository" err
+'
+
+test_expect_success 'ignoring safe.directory in GIT_CONFIG_PARAMETERS' '
+       test_must_fail env \
+               GIT_CONFIG_PARAMETERS="${SQ}safe.directory${SQ}=${SQ}$(pwd)${SQ}" \
+               git status 2>err &&
+       grep "unsafe repository" err
+'
+
 test_expect_success 'ignoring safe.directory in repo config' '
        (
                unset GIT_TEST_ASSUME_DIFFERENT_OWNER &&