safe.directory: document and check that it's ignored in the environment

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>
This commit is contained in:
SZEDER Gábor 2022-04-27 19:06:49 +02:00 committed by Junio C Hamano
parent 424f315d9f
commit 756d15923b
2 changed files with 17 additions and 2 deletions

View 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

View file

@ -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 &&