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

sup*_*jos 3 github github-linguist

我已经在这里这里阅读了相关的 SO 线程,以及 Github Linguist手动覆盖,但我似乎无法从语言统计中排除一些顶级目录。

在当前的最新版本中,此存储库显示了 HTML 代码的优势。单击 HTML 详细信息,会列出两个 HTML 文件:

  • packages/NUnit.2.5.7.10213/NUnitFitTests.html
    最后索引于 2016 年 12 月 30 日。

  • packages/NUnit.2.5.7.10213/Tools/NUnitFitTests.html
    最后索引于 2016 年 12 月 30 日。

但那些应该是排除路径的一部分.gitattributes

.nuget/* linguist-vendored
libs/* linguist-vendored
NUnit.Runners.2.6.4/* linguist-vendored
packages/* linguist-vendored             §§ <--- this one in particular
RubyInstallationFiles/* linguist-vendored
Run Code Online (Sandbox Code Playgroud)

但是在同一个详情页中,左下角的排名清楚地显示了 HTML 在较低的位置,而 C# 则位于顶部:

在此处输入图片说明

我究竟做错了什么?

附带问题:在许多更改中,我还删除了 .gitattribute 文件中的注释,因为我无法从任何参考中找到这些注释是否允许或什么。有谁知道你是否可以在那里发表评论?哪种格式?助教

Sch*_*ern 6

您可以检查属性git-check-attr并验证它们是否按照您认为的方式设置。

$ git check-attr --all -- packages/NUnit.2.5.7.10213/NUnitFitTests.html
$
Run Code Online (Sandbox Code Playgroud)

好像没有属性。问题似乎packages/*是不是递归的。

$ git check-attr --all -- packages/NUnit.2.5.7.10213/
packages/NUnit.2.5.7.10213/: linguist-vendored: set
Run Code Online (Sandbox Code Playgroud)

那么模式的规则是什么?与gitignore相同。

模式匹配路径的规则与 .gitignore 文件中的规则相同;参见 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
Run Code Online (Sandbox Code Playgroud)

现在我们很好。

$ git check-attr --all packages/NUnit.2.5.7.10213/NUnitFitTests.html
packages/NUnit.2.5.7.10213/NUnitFitTests.html: linguist-vendored: set
Run Code Online (Sandbox Code Playgroud)

这也回答了你关于评论的问题......

以# 开头的行用作注释。对于以散列开头的模式,在第一个散列前面放置一个反斜杠 ("\")。

  • 我知道了。不知道它与`.gitignore` 共享相同的 glob 语法。我现在发现这很令人困惑,在所有示例中,文档只显示一个 `*`。另外,我不知道 `git check-attr` 命令,谢谢。 (2认同)