未从Github语言统计信息中排除的路径

未从Github语言统计信息中排除的路径,github,github-linguist,Github,Github Linguist,我已经读过相关的SO线程和,以及Github语言学家,但我似乎无法从语言统计中排除一些顶级目录 在其最新版本中,显示了HTML代码的优势。单击HTML详细信息,将列出两个HTML文件: 软件包/NUnit.2.5.7.10213/nunitfitts.html 上次索引日期为2016年12月30日 软件包/NUnit.2.5.7.10213/Tools/NUnitFitTests.html 上次索引日期为2016年12月30日 但是这些应该是.gittributes中排除路径的一部分: .n

我已经读过相关的SO线程和,以及Github语言学家,但我似乎无法从语言统计中排除一些顶级目录

在其最新版本中,显示了HTML代码的优势。单击HTML详细信息,将列出两个HTML文件:

  • 软件包/NUnit.2.5.7.10213/nunitfitts.html
    上次索引日期为2016年12月30日

  • 软件包/NUnit.2.5.7.10213/Tools/NUnitFitTests.html
    上次索引日期为2016年12月30日

但是这些应该是
.gittributes
中排除路径的一部分:

.nuget/* linguist-vendored
libs/* linguist-vendored
NUnit.Runners.2.6.4/* linguist-vendored
packages/* linguist-vendored             §§ <--- this one in particular
RubyInstallationFiles/* linguist-vendored
.nuget/*语言学家
libs/*语言学家vendored
NUnit.Runners.2.6.4/*语言学家vendored

packages/*语言学家vendored§§您可以使用检查属性,并验证它们是否按您认为的方式设置

$ git check-attr --all -- packages/NUnit.2.5.7.10213/NUnitFitTests.html
$
似乎它没有任何属性。问题似乎是
packages/*
不是递归的

$ git check-attr --all -- packages/NUnit.2.5.7.10213/
packages/NUnit.2.5.7.10213/: linguist-vendored: set
那么模式的规则是什么呢?和你的一样

模式如何匹配路径的规则与.gitignore文件中的规则相同;见上文第(5)段。与.gitignore不同,负面模式是被禁止的

你要找的是
/**

尾随“/**”匹配内部的所有内容。例如,“abc/**”匹配目录“abc”中相对于.gitignore文件位置的所有文件,深度无限

把那个补丁放进去

$ cat .gitattributes 
.nuget/** linguist-vendored
libs/** linguist-vendored
NUnit.Runners.2.6.4/** linguist-vendored
packages/** linguist-vendored
RubyInstallationFiles/** linguist-vendored
现在我们好了

$ git check-attr --all packages/NUnit.2.5.7.10213/NUnitFitTests.html
packages/NUnit.2.5.7.10213/NUnitFitTests.html: linguist-vendored: set
这也回答了你关于评论的问题

以#开头的一行用作注释。对于以哈希开头的模式,在第一个哈希前面加一个反斜杠(\)


可能会发生以下几件事:

尚未更新语言统计信息语言检测作业作为低优先级后台作业运行。语言统计信息可能需要一些时间更新(最多一天)

您丢失了一些HTML文件。搜索结果显示每种语言的文件都被缓存,并且不总是最新的。因此,您的存储库中可能有一些您忘记向供应商提供的HTML文件


如何调试?您最好的选择是在本地运行语言学家。如果您有一个,这很简单:

gem install github-linguist
linguist /path/to/your/repository --breakdown
此命令将输出语言学家结果,其中包含针对每种语言检测到的文件和计算出的百分比


注意:您的
.gittributes
语法正确,无需将星号加倍。对于语言学家来说,在道路的尽头不需要双星号。但是,您可能需要它们匹配通配符路径开头的多个目录,例如:

**/NSpec/Domain/Formatters/Templates/*

我懂了。不知道它与
.gitignore
共享相同的glob语法。我现在觉得很困惑,在所有示例中,文档只显示一个
*
。另外,我不知道git check attr
命令,谢谢。对于语言学家来说,在路径的末尾实际上不需要双星号。@pchaigno不是语言学家做出的决定,而是git。Git应用这些属性。语言学家问Git文件具有什么属性。如果没有双星号,则不会应用属性。“将.gittributes文件添加到项目中,并对要覆盖的文件使用标准git样式的路径匹配器,以设置语言学家文档、语言学家语言、语言学家供应商和语言学家生成。”我对文档的解释与您相同,但是在使用
.gitignore
和特定于语言学家的属性进行测试后,它看起来像路径末尾的单个
*
被解释为与
**
完全相同。我错过什么了吗?文档是否不正确(特别是“注意/*-如果没有斜杠,通配符也会排除foo/bar中的所有内容”)?@pchaigno我在
中尝试了
packages/*Linguaster Vendor
packages/Linguaster Vendor
。gittributes
git check attr--all--packages/NUnit.2.5.7.10213/nunitfitts.html
没有返回任何带有
git
2.13.1的内容。我没有经营语言学家。请注意,
.gitignore
已经在忽略
**/packages/*