当前位置:  开发笔记 > 编程语言 > 正文

在Github项目中搜索代码

如何解决《在Github项目中搜索代码》经验,为你挑选了4个好方法。

有没有办法在Github项目的代码中grep一些东西?

我可以拉动源并在本地grep它,但我想知道是否可以通过Web界面或第三方替代方案.

想法?



1> VonC..:

2013年1月更新:全新搜索已经到来!,基于elasticsearch.org:

在ruby回购中搜索stat将表示为stat repo:ruby/ruby,现在只能使用TM.
(repo名称不区分大小写:test repo:wordpress/wordpress返回相同的test repo:Wordpress/Wordpress)

在此输入图像描述

会给:

在此输入图像描述

你有很多其他的搜索例子,基于追随者,或者在分叉上,或者......


更新2012年7月(Lucene搜索和索引码差,破GUI相结合的旧时代,这里保存归档):

搜索(基于SolrQuerySyntax)现在更加宽容和可怕的" Invalid search query. Try quoting it."使用时,走了默认的一切"搜索选择" :)

(我想我们都可以比蒂姆·皮斯,其中有在他的目标之一"黑客对所有GitHub的性能改进的搜索体验 ",而我没有提到这个堆栈溢出问题的时候;))

下面是Ruby代码内的grep的一个例证:它会验看回购和用户,但为我想要的东西摆在首位,以搜索:代码!

GitHub更宽松的搜索结果


前一期的初步答案和说明(2012年9月=> 2012年3月)

您可以使用高级搜索GitHub表单:

选择Code,RepositoriesUsers从下拉菜单中选择

使用为该搜索类型列出相应前缀.

例如,使用该repo:username/repo-name指令将搜索限制为代码存储库.
最初的" Advanced Search"页面包括以下部分:

代码搜索:

代码搜索将查看GitHub上公开托管的所有代码.您还可以按以下方式过滤:

语言 language:

存储库名称(包括用户名) repo:

文件路径 path:

因此,如果您选择" Code"搜索选择器,那么您在greo中查找文本的查询将起作用:

好搜索选择器


什么是令人难以置信的 无益从GitHub是:

如果您忘记放置正确的搜索选择器(此处为" Code"),您将收到一条错误消息:
" Invalid search query. Try quoting it."

代码文件管理器的选择器错误

错误消息根本没有帮助你.
没有任何数量的" quoting it"会让你摆脱这个错误.

一旦收到该错误消息,您就不会看到这些部分提醒您搜索选择器(" Repositories"," Users"或" Language")与(右侧)搜索过滤器(此处为" repo:")之间的正确关联.
您所做的任何进一步尝试都不会显示这些关联(选择器 - 过滤器).只有您在上面看到的错误消息...
获取这些数组的唯一方法是单击" Advance Search"图标:

GitHub上的高级搜索图标

对于所有搜索过滤Everything器," "搜索选择器(默认情况下)实际上是错误的!除了" "...... (您可以想象/假设" "会帮助您选择实际使用搜索过滤器的任何搜索选择器" ",但不会.这太简单了)language:
Everythingrepo:

您无法Advance Search单独通过" "字段指定所需的搜索选择器!
(但你可以用" language:",即使" Search Language"是" Search for"'类型' 下面的另一个组合框......)

错误的搜索选择器


因此,用户的体验通常如下:

单击" Advanced Search",浏览过滤器的这些部分,并注意您要使用的部分:" repo:"

你做了第一个高级搜索" repo:jruby/jruby stat",但使用默认的搜索选择器" Everything"
=> FAIL!(显示关联"选择器 - 过滤器"的数组已消失)

你注意到"搜索"选择器,选择第一个选项" Repositories"("哇!我想在存储库中搜索...")
=> FAIL!

沮丧,你选择下一个选择器(这里," Users"),甚至没有看到所述选择器,只是再试一次...
=> FAIL!

"搞砸了,GitHub搜索破了!我离开了!"
...
(GitHub高级搜索实际上没有被破坏.只有他们的GUI是...)


所以,回顾一下,如果你想"在Github项目的代码中找到一些东西",作为OP Ben Humphreys,不要忘记选择" Code"搜索选择器......


FWIW我联系了GitHub,因为在限制搜索到我的回购时我没有收到任何搜索结果.Tim Pease回应说他们在回购索引量方面遇到了困难,所以他们一直在迁移到分片索引服务器.当所有回购将被迁移时,没有ETA.
我刚刚使用了这个答案的建议,它也适用于我,但我有一点需要补充.即使GitHib以不同的方式将其列在其他地方,repo名称也应始终为小写.例如,(在设置代码下拉列表之后,如上所述)尝试相同的搜索:repo:wordpress/wordpress vs repo:WordPress/WordPress ...只有第一个将产生结果.

2> Patrick Lins..:

最近的私有存储库有一个搜索字段,用于搜索该存储库.

在此输入图像描述

令人困惑的是,看起来这个功能不适用于公共存储库.


@Sylvain它不认为这是为了鼓励升级,因为即使在升级之后,你也不会获得公共存储库的搜索字段.相反,我认为主搜索使用的索引不包含私有存储库,因此在支付私有存储库时不会丢失功能,他们必须添加另一种方法来搜索该私有存储库,因此额外文本域.
想象一下,他们拥有每个仓库中每行代码的搜索索引的开销!疯!这就是为什么他们只为私人回购做..

3> fny..:

UPDATE

由于XHR问题和API更改,下面的书签黑客被破坏了.

值得庆幸的是,Github现在拥有"全新的代码搜索",可以很好地完成工作.


查看这个巫毒:Github代码搜索用户脚本.

按照那里的说明进行操作,或者如果您讨厌使用脚本和扩展程序膨胀您的浏览器,请使用我的bookmarkcript标签包:

javascript:(function(){var s='https://github.com/skratchdot/github-code-search.user.js/raw/master/github-code-search.user.js',t='text/javascript',d=document,n=navigator,e;(e=d.createElement('script')).src=s;e.type=t;d.getElementsByTagName('head')[0].appendChild(e)})();doIt('');void('');

将上面的源保存为新书签的URL.浏览到任何GitHub库,点击书签,和巴姆:在页面,Ajax化的代码搜索.

CAVEAT Github必须先索引回购,然后才能进行搜索.

在Bookmarklet之前

胡言乱语...

之后 - 查看最左边标签后的第二个菜单栏:文件,提交,分支......

以下是来自带注释的ECMAScript 5.1规范库的示例搜索:

在带注释的ECMAScript 5.1规范库中进行示例搜索


@ user456584这对我来说是新闻.您可能想让[Google](http://support.google.com/chrome/bin/answer.py?hl=zh-CN&answer=100215)和[Mozilla](http://support.mozilla.org/en- US/kb/bookmarklets-perform-common-web-page-tasks)也知道.
我弄清楚为什么插件不起作用,因为repo名称需要小写.(参见我对VonC上面的回答的评论).我已经在GitHub上提交了一个补丁,希望原作者会看到它.https://github.com/skratchdot/github-code-search.user.js/pull/5

4> studgeek..:

虽然@VonC的答案适用于某些存储库,但遗憾的是,对于许多存储库而言,您现在无法做到这一点.Github根本没有索引它们(最初由@emddudley评论).他们没有在他们的网站上任何地方说明这一点,但他们会告诉你,如果你要求支持:

来自:Tim Pease
我们已经停止将新推送的代码添加到我们的codesearch索引中.代码量已超出我们当前的搜索索引,我们正在努力转向更具可扩展性的搜索体系结构.对不起,我很抱歉.我们没有估计这个新的搜索索引何时启动并运行,但是当它准备就绪时,将发布一篇博客文章(https://github.com/blog).

令人讨厌的是,除了缺少结果(也可能来自错误的查询)之外,无法确定哪些存储库没有被编入索引.

除了等待他们博客(或在这里观看SO)之外,也无法跟踪此问题.

来自:Tim Pease
我担心我们的问题跟踪器是内部的,但我们可以在新搜索索引启动并运行后立即通知您.

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有