Notes
.gitignore 规则过宽导致CUDA源码遗漏
在代码同步时,我发现:本地存在的CUDA扩展源码,没有出现在远端检出的代码中;
排查后发现,问题发生在将解压后的源码导入新Git仓库的环节。根目录.gitignore中有一条规则:
src/
它不仅会忽略根目录的 src/,还会匹配嵌套的同名目录,例如:
fluxvla/ops/cuda/gemma_rotary_embedding/src/
因此,这些尚未被Git跟踪的C++和CUDA 源文件被忽略,没有进入提交;而 setup.py 仍然引用它们,导致提交中的文件不足以满足构建要求。
为什么直接克隆官方仓库可能没有问题?
.gitignore 只影响未跟踪文件,已经被 Git 跟踪的文件不受影响。
因此,同一条规则在两种场景下表现不同:
- 直接克隆已有仓库:提交中已经包含的源码仍会被检出。
- 解压源码快照后新建仓库:文件最初都是未跟踪状态,可能在首次添加时被忽略。
这也解释了为什么“本地有文件”“两端提交一致”,仍不足以证明源码交付完整。Git 官方规则说明
如何定位?
在仓库根目录,针对一个缺失文件执行:
git check-ignore -v fluxvla/ops/cuda/gemma_rotary_embedding/src/gemma_rotary_embedding_forward.cpp
这条命令用于查看命中的忽略规则及其来源。
再检查文件是否进入索引和当前提交:
git ls-files -- fluxvla/ops/cuda/gemma_rotary_embedding/src/gemma_rotary_embedding_forward.cpp
git ls-tree -r HEAD -- fluxvla/ops/cuda/gemma_rotary_embedding/src/gemma_rotary_embedding_forward.cpp
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/songyuc/article/details/166234481



