有没有办法在Github项目的代码中grep一些东西?
我可以拉动源并在本地grep它,但我想知道是否可以通过Web界面或第三方替代方案.
想法?
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的一个例证:它会验看回购和用户,但也为我想要的东西摆在首位,以搜索:代码!
前一期的初步答案和说明(2012年9月=> 2012年3月)
您可以使用高级搜索GitHub表单:
选择Code
,Repositories
或Users
从下拉菜单中选择
使用为该搜索类型列出的相应前缀.
例如,使用该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
"图标:
对于所有搜索过滤Everything
器," "搜索选择器(默认情况下)实际上是错误的!除了" "......
(您可以想象/假设" "会帮助您选择实际使用搜索过滤器的任何搜索选择器" ",但不会.这太简单了)language:
Everything
repo:
您无法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
"搜索选择器......
最近的私有存储库有一个搜索字段,用于搜索该存储库.
令人困惑的是,看起来这个功能不适用于公共存储库.
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必须先索引回购,然后才能进行搜索.
胡言乱语...
以下是来自带注释的ECMAScript 5.1规范库的示例搜索:
虽然@VonC的答案适用于某些存储库,但遗憾的是,对于许多存储库而言,您现在无法做到这一点.Github根本没有索引它们(最初由@emddudley评论).他们没有在他们的网站上任何地方说明这一点,但他们会告诉你,如果你要求支持:
来自:Tim Pease
我们已经停止将新推送的代码添加到我们的codesearch索引中.代码量已超出我们当前的搜索索引,我们正在努力转向更具可扩展性的搜索体系结构.对不起,我很抱歉.我们没有估计这个新的搜索索引何时启动并运行,但是当它准备就绪时,将发布一篇博客文章(https://github.com/blog).
令人讨厌的是,除了缺少结果(也可能来自错误的查询)之外,无法确定哪些存储库没有被编入索引.
除了等待他们博客(或在这里观看SO)之外,也无法跟踪此问题.
来自:Tim Pease
我担心我们的问题跟踪器是内部的,但我们可以在新搜索索引启动并运行后立即通知您.