如何使用GitHub Search API在GitHub fork中搜索代码?

时间:2015-11-10 09:09:01

标签: github github-api

我无法弄清楚如何从GitHub存储库的分支中获取搜索结果。

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

  

与存储库非常相似,您可以选择搜索分叉存储库中存在的代码文件。但是,为了确保更好的相关性,除非fork具有比父存储库更多的星形,否则将无法搜索存储库分支。

     

如果您希望显示分叉结果,请添加 fork:true 限定符。例如:

     

android language:java fork:true   匹配分叉存储库中的代码,其中包含用Java编写的“android”一词。

因此,搜索shortcut in:file filename:manifest.json 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。这两个存储库还包含manifest.json个文件,其中包含单词shortcut

搜索shortcut in:file filename:manifest.json repo:PEZ/Sketch-Plugin-Testing-Repo repo:getflourish/Sketch-Mate repo:TeamTwisted/external_chromium_org repo:OptiPop/external_chromium_org fork:true,仅包含<{1}}存储库中的 结果。虽然omitting the fork:true限定符返回所有存储库的结果,但 TeamTwisted/external_chromium_org除外。

任何人都知道发生了什么?由于某种原因,PEZ/Sketch-Plugin-Testing-Repo是完全无法搜索的吗?我测试回购的唯一特别之处就是它是一个新制造的叉子。也许我在11月8日或其他一些事情(两天前写这篇文章时)将其分开。

理想情况下,我想使用一个搜索查询并从一组给定的存储库中获取结果,而不管它们是否分叉。但只是始终从叉子获得结果将是一个良好的开端......

1 个答案:

答案 0 :(得分:7)

你也接受了GitHub的支持,所以我想在这里分享你从Jess得到的答案,以防万一。

  

当fork的星号少于其父级时,它根本不会被编入索引以进行代码搜索。所以即使你使用fork它也不会出现:true。 fork:true搜索过滤器用于显示已为搜索索引的分支的结果。

     

在TeamTwisted / external_chromium_org分支的示例中,该代码是可搜索的,因为它具有比其父代表更多的星号。然而,PEZ / Sketch-Plugin-Testing-Repo fork没有,所以它不会被任何过滤器搜索到。