Fix git submodule file:// protocol in test fixture#510
Merged
Conversation
…rotocol (#509) why: Reproduce the "transport 'file' not allowed" error that occurs in strict build environments when git submodule operations spawn child processes that don't inherit local repo config what: - Add test_gitconfig_submodule_file_protocol test - Uses monkeypatch to simulate isolated git environment - Marked xfail until gitconfig fixture is fixed
…ests why: git submodule operations spawn child processes that don't inherit local repo config, causing "transport 'file' not allowed" errors in strict build environments (#509) what: - Add [protocol "file"] allow = always to gitconfig fixture
why: The gitconfig fixture now includes protocol.file.allow=always what: - Remove xfail marker from test_gitconfig_submodule_file_protocol
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #510 +/- ##
==========================================
+ Coverage 53.22% 53.38% +0.16%
==========================================
Files 38 38
Lines 5676 5696 +20
Branches 1063 1063
==========================================
+ Hits 3021 3041 +20
Misses 2144 2144
Partials 511 511 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
file:// protocol in test fixture
Member
Author
Code reviewNo issues found. Checked for bugs and CLAUDE.md compliance. 🤖 Generated with Claude Code If this code review was useful, please react with 👍. Otherwise, react with 👎. |
tony
added a commit
that referenced
this pull request
Jan 25, 2026
why: Document the pytest plugin fix for strict build environments what: - Add Tests section for 0.39.x release - Note the protocol.file.allow=always addition to gitconfig fixture
tony
added a commit
that referenced
this pull request
Jan 25, 2026
why: Document the pytest plugin fix for strict build environments what: - Add Tests section for 0.39.x release - Note the protocol.file.allow=always addition to gitconfig fixture
8fa3ac1 to
67d7791
Compare
tony
added a commit
that referenced
this pull request
Jan 25, 2026
why: Document the pytest plugin fix for strict build environments what: - Add Tests section for 0.39.x release - Note the protocol.file.allow=always addition to gitconfig fixture
67d7791 to
c5d4172
Compare
why: Document the pytest plugin fix for strict build environments what: - Add Tests section for 0.39.x release - Note the protocol.file.allow=always addition to gitconfig fixture
c5d4172 to
f2ef0fb
Compare
tony
added a commit
to vcs-python/vcspull
that referenced
this pull request
Jan 25, 2026
tony
added a commit
that referenced
this pull request
Jan 25, 2026
why: The fixture was returning early if .gitconfig already existed, even if the file was empty or missing protocol.file.allow=always. This caused failures on Arch Linux build where git/container setup creates an incomplete .gitconfig before the fixture runs. what: - Remove early return that skipped writing when file exists - Fixture now always writes the full config with protocol.file.allow - Follow-up to #510, #511 for #509
4 tasks
tony
added a commit
that referenced
this pull request
Jan 25, 2026
why: The fixture was returning early if .gitconfig already existed, even if the file was empty or missing protocol.file.allow=always. This caused failures on Arch Linux build where git/container setup creates an incomplete .gitconfig before the fixture runs. what: - Remove early return that skipped writing when file exists - Fixture now always writes the full config with protocol.file.allow - Follow-up to #510, #511 for #509
tony
added a commit
that referenced
this pull request
Jan 25, 2026
## Summary - Fix `gitconfig` fixture to always write config - removes early return that skipped writing when file exists - Follow-up to #510, #511 for #509 ## Problem The `gitconfig` fixture had an early return at lines 157-158: ```python if gitconfig.exists(): return gitconfig ``` If ANYTHING creates `.gitconfig` first (empty or incomplete) - git itself during `git init`, the nspawn container setup, another fixture - the fixture returns early WITHOUT writing `protocol.file.allow=always`. Confirmed by reporter running debug script: empty `.gitconfig` was created by container/git before the fixture could write the proper config. ## Solution Remove the early return. The fixture now always writes the complete config with `protocol.file.allow=always`.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
[protocol "file"] allow = alwaysto gitconfig fixture to fix submodule tests in strict build environmentsRoot Cause
Git submodule operations spawn child processes that don't inherit local repo config. The child
git cloneneedsprotocol.file.allow=alwaysin global config ($HOME/.gitconfig), not just local repo config.Test Plan
test_gitconfig_submodule_file_protocolreproduces the error without fixFixes #509