diff --git a/docs/ci/templates/game.gitignore b/docs/ci/templates/game.gitignore index 4a4ee445..efcb1b5d 100644 --- a/docs/ci/templates/game.gitignore +++ b/docs/ci/templates/game.gitignore @@ -43,6 +43,12 @@ disc.cfg rom.cfg settings.toml +# Local analysis scratch — GPU frame captures / parity dumps (the default +# --out for tools/gpu_frame_*.py and gpu_parity.py) and asset rips pulled off +# the disc. Multi-hundred-MB binaries land here and are rejected by GitHub's +# 100 MB blob limit, and ripped disc content must never be committed at all. +/analysis/ + # Ghidra / local analysis /ghidra/projects/ *.gpr diff --git a/tools/new_project_layout/project_studio/detect.py b/tools/new_project_layout/project_studio/detect.py index b60c0070..07ba2df7 100644 --- a/tools/new_project_layout/project_studio/detect.py +++ b/tools/new_project_layout/project_studio/detect.py @@ -674,7 +674,7 @@ def audit_project(root: Path) -> AuditReport: gi = _read(root / ".gitignore") missing_gi = [ pat - for pat in ("/generated/", "/disc/", "/bios/", "/dist/") + for pat in ("/generated/", "/disc/", "/bios/", "/dist/", "/analysis/") if pat not in gi and pat.rstrip("/") not in gi ] if not (root / ".gitignore").is_file(): diff --git a/tools/new_project_layout/project_studio/ops.py b/tools/new_project_layout/project_studio/ops.py index 54d5a675..3c15a808 100644 --- a/tools/new_project_layout/project_studio/ops.py +++ b/tools/new_project_layout/project_studio/ops.py @@ -668,6 +668,10 @@ def op_merge_gitignore(root: Path, options: MigrateOptions) -> ApplyResult: "/build/", "/build-*/", "/saves/", + # Local analysis scratch: GPU frame captures / parity dumps and disc + # asset rips. Routinely exceeds GitHub's 100 MB blob limit, and rips + # are disc content that must never be committed. + "/analysis/", "*.bin", "*.cue", ] diff --git a/tools/new_project_layout/templates/gitignore.in b/tools/new_project_layout/templates/gitignore.in index d0de83ec..a80bc026 100644 --- a/tools/new_project_layout/templates/gitignore.in +++ b/tools/new_project_layout/templates/gitignore.in @@ -42,6 +42,12 @@ disc.cfg rom.cfg settings.toml +# Local analysis scratch — GPU frame captures / parity dumps (the default +# --out for tools/gpu_frame_*.py and gpu_parity.py) and asset rips pulled off +# the disc. Multi-hundred-MB binaries land here and are rejected by GitHub's +# 100 MB blob limit, and ripped disc content must never be committed at all. +/analysis/ + # Ghidra / local analysis /ghidra/projects/ *.gpr