Repository navigation
fix(conventions): report 3rdparty submodules without a .gitmodules entry - #4304
Merged
oneandonlydean merged 1 commit intoOct 12, 2026
Merged
oneandonlydean merged 1 commit into
oneandonlydean merged 1 commit into
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
What
repository()intools/check_conventions.pyskips every changed path under3rdparty/. That includes gitlinks, so a submodule added there without a.gitmodulesentry passes. That is how the stray3rdparty/imguigitlink fromddf6b8c98(#3470) reached main: Conventions run 38137041751 passed on that head at 11:50Z, and the PR merged at 11:51Z. Until #3511 removed it at 12:42Z, checking out main failed even withsubmodules: false.actions/checkoutrunsgit submodule foreach, which stopped withfatal: No url found for submodule path '3rdparty/imgui' in .gitmodules. That broke the Conventions and relinker jobs of other pull requests, for example Conventions run 38137872909 on #3509.A gitlink under
3rdparty/that a pull request adds or changes now needs a.gitmodulesentry with apathand a non-emptyurl, which is what a checkout with submodules needs. When the pull request changes.gitmodules, every gitlink under3rdparty/in the head is checked, so dropping an entry or itsurlis caught too. A missing one is reported assystem-dependency("submodule without a url in .gitmodules"). Gitlinks outside3rdparty/keep their existing report from #3667..gitmodulesis read withgit config --no-includes --blob <head>:.gitmodules, since git ignores includes there. A.gitmodulesthat git cannot parse leaves the changed gitlinks reported instead of crashing the check. On a pull request that touches neither, the check makes no extra git call.Tested
Ubuntu 24.04, Python 3.12.3, git 2.43:
tools/testsfiles pass, including 31 tests intest_check_conventions_comments.py.test_thirdparty_submodule_remains_allowednow gives its submodule a.gitmodulesentry, named differently from its path.urldropped from an existing entry. Both fail on main's checker.--base 6731a610e^1 --head 6731a610e^2(fix(libSceNpTrophy2): return success from sceNpTrophy2ShowTrophyList #3470) reports3rdparty/imgui; main's checker passes it.fab9f576a) passes..gitmodulesor a3rdparty/gitlink, the only commit reported isddf6b8c98.3rdparty/or.gitmodules(feat(input): add native SDL input configuration with ImGui #674, feat(aot): discuss native ARM64 compiler architecture and integration #1835, feat(libSceUsbd): pass USB devices and transfers through to the host with libusb #3848, feat(libSceUsbd): add the transfer fill helpers and the synchronous bulk and interrupt transfers #3875, feat(aot): run source-built graphics on native Apple ARM64 #3891, fix(ssl): retain loaded certificate authorities #3897, feat(aot): derive guard sites from qualified image recipes #4156)..gitmodulesand an emptyurl =are reported;tools/check_conventions.pyfrom main passes on this branch with this title and body.Not covered: a gitlink whose entry is unchanged but whose URL is unreachable.
Checklist
main; no other open PR implements the same functionsNotImplemented_nid_no_patch); silent stubs are listed in TechnicalDebt.mdfiles or images added to the repository (attach them to this PR)Generated with Claude Code