[P2][CR-T6] 仓库卫生:public/ 约 54.2MB 烘焙资源入库(与 package.json 声明矛盾)、已合并 worktree 与分支未清理 #538
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
问题描述
仓库在版本控制卫生上有两处明显不一致:
public/下追踪了 2,191 个由 MPQ 烘焙生成的贴图与元数据文件(合计约 54.2MB),直接把.git撑到约 84MB,而且与package.json中 "No game assets are bundled" 的版权/架构声明矛盾。main的 worktree 与分支,违反AGENTS.md§7.4 的清理铁律。证据
1.
public/入库资产统计(git ls-tree -r -l e475c2e -- public)public/overlays/.png+.json)public/skills/public/missiles/.png+.json)public/ui/public/assets/.ttf)等1,446个.png、743个.json、2个.ttf"description": "Web-native Diablo II engine: reads assets from a user-supplied classic MPQ. No game assets are bundled."npm run pack:missiles、npm run pack:overlays、npm run pack:ui都会直接改写大批二进制 PNG,造成巨大的 git diff 与历史体积膨胀。2. 已合并但未清理的 worktree 与本地分支
AGENTS.md:107-108(§7.4)规定:"合并并推送成功后,立即执行
git worktree remove .worktrees/<topic>与git branch -d <type>/<topic>,并执行git worktree prune,确保不遗留悬空 worktree 或分支。"当前工作区中残留以下已完全合入
main的 worktree 与分支:.worktrees/runeword-system(分支feat/runeword-system,其提交已合入main).worktrees/set-items(分支feat/set-items,其提交已合入main)feat/issue-507-socket-system(已合入main,未删除)根因
scripts/pack-*.ts)直接将产物输出到public/,而.gitignore没有忽略这些可由本地 MPQ 确定性重生成的目录,提交时顺手git add入库。修复指南
package.json保持一致):package.json声明):代码仓不追踪从商业 MPQ 导出的烘焙贴图。.gitignore中忽略public/missiles/、public/overlays/、public/skills/、public/ui/(保留必要的开源占位或字体说明);git rm -r --cached public/missiles public/overlays public/skills public/ui从当前索引移除;npm run pack:all(串联pack:ui、pack:missiles、pack:overlays、pack:entities等,读取 #536 中的D2_DATA_DIR),并在构建/部署流水线或独立私有制品桶中托管预烘焙包;git filter-repo清理历史提交中的二进制体积(会重写历史 SHA,不建议在日常 PR 中做)。package.json的description与README.md,删除 "No game assets are bundled" 的不实描述,明确仓库仅限私有部署;public/**/*.png迁移到 Git LFS,避免每次微调透明阈值或调色板都把几十 MB 的二进制 blob 直接写进常规模特对象库。验收标准
public/的托管方式与package.json/README.md的声明一致(要么从 git 索引移除并由npm run pack:all生成,要么更新文档并接入 Git LFS)。git worktree list只剩主工作区(或当前正在开发的活跃 worktree),git branch --merged main不再残留已合并的历史特性分支。npm run typecheck0 error;npx vitest run全部通过。相关
*-meta.ts文件与构建产物拆分。D2_DATA_DIR环境变量约定。