已配置linguist-vendored属性,github-linguist仍统计供应商代码如何解决
问题原因
主要有两个核心原因导致配置生效但统计结果不符合预期:
- 路径匹配写法兼容性问题:你使用的
[[:space:]]POSIX字符类匹配空格,在Linguist自身的路径解析逻辑中兼容性不足,即使git check-attr能识别该规则,Linguist也可能无法正确匹配带空格的路径。 - 本地Linguist运行参数错误:默认运行
github-linguist不会读取Git提交中存储的.gitattributes属性配置,仅使用默认统计规则,所以你看到的结果是未应用自定义规则的统计数据。
解决步骤
1. 修正.gitattributes规则
将空格匹配改为更通用的反斜杠转义写法,保证Linguist可以正确识别路径:
# 标记整个STM32 Code目录为供应商代码,默认排除统计 STM32\ Code/** linguist-vendored # 保留自己编写的Core目录代码参与统计 STM32\ Code/*/Core/Src/** -linguist-vendored STM32\ Code/*/Core/Inc/** -linguist-vendored
2. 提交配置到仓库
确保修改后的.gitattributes已经提交到当前分支的HEAD版本:
git add .gitattributes git commit -m "调整Linguist统计规则"
3. 正确运行本地统计命令
添加--rev HEAD参数,强制Linguist读取当前HEAD提交中的Git属性配置进行统计:
github-linguist --rev HEAD --breakdown
额外说明
如果是GitHub官网的仓库统计显示异常,在提交配置后需要等待最长几小时的缓存刷新时间,统计结果才会更新。
内容的提问来源于stack exchange,提问作者unknownperson
相关产品推荐
相关产品推荐

