Give run_git's config nulls a witness no -c reaches (improvise-3j70)
GIT_CONFIG_GLOBAL=/dev/null and GIT_CONFIG_NOSYSTEM=1 in run_git were witnessed by a config excludesFile, which vwjj's -c core.excludesFile=/dev/null outranks. So dropping either line passed every test from vwjj onwards. The hostile child's config, read as both GIT_CONFIG_GLOBAL and GIT_CONFIG_SYSTEM, now also sets core.sharedRepository = nonsense. Measured on git 2.55: git init and git add die on it, git ls-files does not read it (so the walk, which does not null the user's config, is unaffected), and run_git passes no -c for it. init.defaultObjectFormat and init.defaultRefFormat were tried first; they only warn. Dropping either env line is now red. Every other rival in the combined test is unchanged, and there is still one child per test. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
This commit is contained in:
@@ -223,9 +223,10 @@ fn a_hostile_git_environment_changes_nothing() {
|
||||
let excludes = home.path().join("ignore");
|
||||
std::fs::write(&excludes, "*.gz\n").expect("writes");
|
||||
let config = home.path().join("gitconfig");
|
||||
// improvise-vav0: the same config also sends every trace2 target to stdout.
|
||||
// vav0: trace2 targets go to stdout. 3j70: a bad sharedRepository kills `init`
|
||||
// and `add` but not `ls-files`, and no `-c` in run_git overrides it.
|
||||
let text = format!(
|
||||
"[core]\n\texcludesFile = {}\n[trace2]\n\tnormalTarget = /dev/stdout\n\teventTarget = /dev/stdout\n\tperfTarget = /dev/stdout\n",
|
||||
"[core]\n\texcludesFile = {}\n[trace2]\n\tnormalTarget = /dev/stdout\n\teventTarget = /dev/stdout\n\tperfTarget = /dev/stdout\n[core]\n\tsharedRepository = nonsense\n",
|
||||
excludes.display()
|
||||
);
|
||||
std::fs::write(&config, text).expect("writes");
|
||||
|
||||
Reference in New Issue
Block a user