已关闭
部分PNG文档图片未走Git LFS,以裸二进制存储在仓库中 #6391
AlfengYuan创建于  18 天前关闭于  15 天前
AlfengYuan
AlfengYuan成员
18 天前 创建

问题描述

仓库自 4234565ac(2026-09-04,"docs: 新增图融合规则说明文档")起,根目录 .gitattributes 声明了 PNG 走 Git LFS:

*.png filter=lfs diff=lfs merge=lfs -text

但该规则只对此后新增/重新暂存的文件生效,不会追溯转换已有 blob。目前 master HEAD 上仍有 10 个 PNG 以裸二进制形式直接存储在 git 对象库中(blob 魔数为 89 50 4E 47,而非 version https://git-lfs 指针文件),均由规则引入之前的历史提交带入。

受影响文件(master HEAD)

文件 引入提交 日期 大小
docs/zh/figures/atlas_a2_hardware_arch.png abefa59c8 2026-08-05 310KB
docs/zh/figures/ascend950_cv_direct_channel.png abefa59c8 2026-08-05 135KB
docs/zh/figures/ascend950_hardware_arch.png abefa59c8 2026-08-05 127KB
docs/zh/figures/DynamicDualLevelMxQuant.png e88b0c371 2026-01-28 100KB
docs/zh/figures/aclnn_call_flow.png 4ba402998 2026-08-04 34KB
docs/zh/figures/InplaceAddLayerNormFusionPass_1.png fa68d2d1e 2026-09-02 18KB
docs/zh/figures/LayerNormRemoveBroadcastFusionPass_1.png 476c79967 2026-09-01 13KB
docs/zh/figures/GatherToGatherV2FusionPass_1.png b2e7cbbe0 2026-09-04 11KB
docs/zh/figures/attenmask_band_matrix.png 4ba402998 2026-08-04 7KB
docs/zh/figures/QK_transpose_diagram.png 4ba402998 2026-08-04 2KB

HEAD 上合计约 760KB;且 abefa59c8("产品文档中png文件改为英文名")等提交的旧版本 blob 仍留在历史中,pack 实际占用更大。

影响

  1. 存储状态不一致:master 上 104 个 PNG 中 94 个是 LFS 指针、10 个是真实二进制,克隆/检出行为依赖本地是否安装 git-lfs;
  2. 二进制 blob 永久进入 git 历史,仓库及所有 fork 的克隆体积随之增大;
  3. LFS 存储统计/配额失真;
  4. 目前无 CI 防护,未安装/未启用 git-lfs 的提交环境仍会以裸二进制方式合入新的 PNG,问题会继续累积。

复现

git clone https://gitcode.com/cann/ops-nn.git && cd ops-nn
for f in $(git ls-tree -r HEAD --name-only | grep -i '\.png$'); do
  git cat-file blob "HEAD:$f" | head -c 30 | grep -q 'version https://git-lfs' || echo "raw binary: $f"
done

建议

  1. 存量转换:执行 git add --renormalize . 后提交一次,将这 10 个文件转为 LFS 指针(不重写历史,普通 MR 即可);
  2. 如接受历史重写,可用 git lfs migrate import --everything "*.png" 彻底回收历史体积(需协调下游/fork);
  3. 增量防护:CI 增加校验——对 MR 新增的、命中 .gitattributes LFS 规则的文件逐一检查 blob 是否为 LFS 指针,非指针则拦截合入。
likedislike
yuning_chen
yuning_chen成员
17 天前 评论:

初步分析

感谢反馈,我们已开始核对这个问题。

现象理解:.gitattributes 已声明 PNG 走 Git LFS,但规则生效前合入的部分图片可能仍以裸二进制存在于当前 master。
当前判断:初步判断,待复现确认。这属于仓库存储方式问题,一般不影响算子功能;所列图片是否仍不是 LFS 指针,需对照当前对象核实。
涉及范围:docs/zh/figures 等文档 PNG 与根目录 .gitattributes。
下一步:我们会核对这批 PNG 是否仍是裸二进制,评估迁移到 Git LFS。

likedislike
yuning_chenyuning_chen成员
17 天前 将 yolic 设为负责人
yuning_chenyuning_chen成员
16 天前 关联了pull request:fix: 将裸二进制文档 PNG 转为 Git LFS 指针
CANN-robotCANN-robot成员
15 天前 关闭了 issue
CANN-robotCANN-robot成员
15 天前 添加了label:resolved
AlfengYuanAlfengYuan成员
15 天前 issue状态由 进行中 改变为 已完成