如何避免生成代码/拷贝文件影响GitHub Languages stats
前言
在GitHub Repository中,右边基本都会有一个名为Languages
的Section,展示了该仓库所用语言的占比,而作为一个开发者,GitHub的信息多少能够体现owner的能力和经验,所以会存在通过api统计GitHub信息的需要。
例如:
参考:github-readme-stats
但是,有时候我们的仓库中会存在一些copy过来的文件(e.g: jQuery.js)或者是工具生成的代码,而这些的代码通常会比较大从而大大影响我们统计的实际结果。
同样,笔者在Profile中添加了Top Languages的分析,由于Blog
这个仓库中使用了theme/生成的文件中存在大量的js文件,导致Top Languages 中javascript排名第一,而笔者对javascript只是了解和看懂的水平,所以统计出来的结果比较不符合实际。Linguist
能帮你避免分析这类文件。
介绍
Linguist is used on GitHub.com to detect blob languages, ignore binary or vendored files, suppress generated files in diffs, and generate language breakdown graphs.
更多请看 linguist
使用
Linguist
能做的东西挺多,本文只根据笔者所遇情况介绍Excluded from stats(从统计中排除)
的用法。
只需两步:
- 在仓库根目录上创建一个名为
.gitattributes
的文件 - 按照文档将你需要标记的文件目录写入文件中,并使用对应的
attribute
标识
例如:
更多信息请看 Overridesjs/** linguist-vendored css/** linguist-vendored libs/** linguist-vendored
问题
如果你是在已存在的仓库中设置,当你提交后,可能发现它并没有效果,因为之前的所有提交并没有得到这些attribute
处理文件。
解决也很简单
- 首先确保当前没有其他提交,如果有,请先push或隐藏,可以使用命令查看
git status
- 重置
重置会让文件使用上定义的git rm --cached -r . git reset --hard
attribute
s
总结
Linguist
不仅在Language统计分析上能有效避免错误结果,同样支持不同语言定义和路径覆盖等功能。在每次创建和保存文件时,git都会根据定义的attribute
s自动保存文件。