如何使用GitHub搜索API在GitHub的派生项目中搜索代码?

9

我不知道如何从 GitHub 存储库的分支中获取搜索结果。

我正在使用 GitHub API 进行操作,但是我可以通过 github.com 上的搜索对话框复现该问题。以下是一个示例:存储库 PEZ/Sketch-Plugin-Testing-Repogetflourish/Sketch-Mate 的分支。它们都包含一个 manifest.json 文件,并且文件中有几个单词 shortcut 的提到。GitHub Code Search documentation 中提到:

与代码库类似,您可以选择搜索存在于派生存储库中的代码文件。但是,为了确保更好的相关性,除非 fork 拥有比父存储库更多的星标,否则不会搜索存储库 fork。
如果想要显示 fork 的结果,请添加 fork:true 限定符。例如: android language:java fork:true 匹配在使用 Java 编写的 fork 存储库中具有“android”单词的代码。
因此,搜索 manifest.json 文件中的 shortcut repo:PEZ / Sketch-Plugin-Testing-Repo repo:getflourish / Sketch-Mate fork:true应该返回两个仓库的结果。 但是它没有任何搜索结果。 省略 fork:true 限定符 - shortcut in:file filename:manifest.json repo:PEZ/Sketch-Plugin-Testing-Repo repo:getflourish/Sketch-Mate,我们可以从原始(非 fork)存储库中获得搜索结果。 我没有理解错什么吧? 为了让事情变得更加神秘,请考虑 repo:TeamTwisted/external_chromium_org 存储库,它是 OptiPop/external_chromium_org 的一个 fork。这两个存储库还包含包含单词shortcutmanifest.json 文件。

搜索manifest.json文件中的shortcut,在 TeamTwisted/external_chromium_org 仓库中返回结果。 省略fork:true限定符 返回除 PEZ/Sketch-Plugin-Testing-Repo 之外所有仓库的结果。

有人知道发生了什么吗?PEZ/Sketch-Plugin-Testing-Repo 是否因某种原因完全无法搜索? 我的测试存储库唯一特殊的事情可能就是它是一个新创建的 fork。 也许我在11月8日或类似日期上 fork 它(在撰写本文时为两天前)。

理想情况下,我希望使用一个搜索查询,并从给定的存储库集合中返回结果,无论它们是 fork 还是不是。 但是,要始终从 fork 中获取结果是个好开始...


1
对于任何遇到这个问题的人,解决之谜在于这个注释:“但是,为了确保更好的相关性,除非派生库的星数超过父库,否则派生库将无法被搜索。” - PEZ
1个回答

9

您也向GitHub支持团队寻求帮助,所以我想在此分享Jess给您的答复,希望能帮到您。

当一个分支的星数少于其父分支时,它根本不会被编入代码搜索索引。因此,即使您使用fork:true,它也不会显示出来。fork:true搜索过滤器用于显示已编入搜索索引的分支的结果。

例如,TeamTwisted/external_chromium_org分支的代码是可搜索的,因为它的星数比其父存储库多。但是PEZ/Sketch-Plugin-Testing-Repo分支不是,因此无论使用哪种过滤器,它都不可搜索。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接