关于git:在Github项目中搜索代码

Search code inside a Github project

在GitHub项目的代码中有没有一种方法可以更好地处理某些内容?

我可以在本地提取源代码并对其进行grep,但我想知道是否可以通过Web界面或第三方备选方案来实现。

思想?


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

在Ruby repo中搜索stat将表示为stat repo:ruby/ruby,现在只会运行tm。(回购名称不区分大小写:test repo:wordpress/wordpress返回与test repo:wordpress/wordpress相同的名称)

enter image description here

将给予:

enter image description here

你还有很多其他的搜索例子,基于追随者,或者基于forks,或者…

2012年7月更新(Lucene搜索和糟糕的代码索引的旧时代,结合损坏的GUI,保存在这里存档):

搜索(基于solrquerysyntax)现在更为宽松,当使用默认搜索选择器"everything":时,可怕的"EDOCX1"(3)将消失。

(我想我们可以比蒂姆·皮斯(Tim Pease)做的更好,他有一个目标是"黑客改进所有Github属性的搜索体验",我当时确实提到了这个堆栈溢出问题。)

下面是Ruby代码中grep的一个例子:它将查找repos和用户,同时也将查找我首先要搜索的内容:代码!

GitHub more permissive search results

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

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

  • 从下拉列表中选择CodeRepositoriesUsers,然后
  • 使用为该搜索类型列出的相应前缀。

例如,使用repo:username/repo-name指令将搜索限制在代码存储库中。"Advanced Search页"开头包括以下部分:

Code Search:

The Code search will look through all of the code publicly hosted on GitHub. You can also filter by :

  • the language language:
  • the repository name (including the username) repo:
  • the file path path:

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

Good Search selector

Github的无益之处在于:

  • 如果忘记使用正确的搜索选择器(此处为"EDOCX1〔4]),将收到一条错误消息:"EDCOX1×3"

Wrong selector for the code filer

  • 错误消息对您一点帮助都没有。任何数量的"EDOCX1"〔12〕都不能使您摆脱这个错误。

  • 一旦您收到错误消息,您就不会收到提醒您搜索选择器("Repositories"、"Users或"EDOCX1〔15])与(右)搜索筛选器(此处为"EDOCX1〔16])之间正确关联的部分。任何进一步的尝试都不会显示这些关联(选择器过滤器)。只有上面看到的错误消息…返回这些阵列的唯一方法是单击"EDOCX1"(17)图标:

Advance Search Icon on GitHub

  • 默认的"Everything搜索选择器"实际上是所有搜索过滤器的错误选择!除了"language:号"…(您可以想象/假设"EDOCX1"〔18〕将帮助您选择搜索过滤器"EDOCX1"〔16〕实际工作的任何搜索选择器,但不是。那太容易了)

  • 不能通过"Advance Search字段单独指定所需的搜索选择器!(但是你可以用"language:",即使"Search Language是另一个组合框,就在"Search for"的"type"一下面……)

Wrong search selector

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

  • 你点击"Advanced Search",浏览那些过滤器的部分,注意到你想要使用的一个:"repo:"
  • 您进行了第一次高级搜索"repo:jruby/jruby stat",但使用默认的搜索选择器"Everything"。=>江户十一〔30〕!(显示关联"选择器过滤器"的数组也不存在)
  • 您注意到"搜索"选择器thingy,选择第一个选项"Repositories"(dah!我想在存储库中搜索…)=>江户十一〔30〕!
  • 沮丧的是,你选择了下一个选择符(这里是"EDOCX1"(6)),甚至不看所说的选择符,只想再试一次……=>江户十一〔30〕!
  • "别这样,Github搜索被破坏了!我要走了!"…(Github高级搜索实际上没有中断。只有他们的图形用户界面是…)

综上所述,如果你想"grep for something inside a github project's code"(grep for something in a github project's code),就像op ben humphreys那样,不要忘记选择"EDOCX1"〔4〕搜索选择器…


最近的私有存储库有一个搜索字段用于通过该repo进行搜索。

enter image description here

令人困惑的是,这个功能似乎对公共存储库不可用。


更新

由于XHR问题和API更改,下面的bookmarklet hack被破坏。

值得庆幸的是,Github现在有了"全新的代码搜索",这项工作做得非常出色。

Checkout this voodoo: Github code search
userscript.

Follow the directions there, or if you hate bloating your browser with
scripts and extensions, use my bookmarkified bundle of the userscript:

1
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('');

Save the source above as the URL of a new bookmark. Browse to any
Github repo, click the bookmark, and bam: in-page, ajaxified code
search.

CAVEAT Github must index a repo before you can search it.

Before the Bookmarklet

Abracadabra...

After - Look in the second menubar after the leftmost tabs: Files, Commits, Branches...

Here's a sample search from the annotated ECMAScript 5.1 specification
repository:

Sample search in the annotated ECMAScript 5.1 specification repository


虽然@vonc的答案适用于某些存储库,但不幸的是,对于许多存储库,您现在不能。Github只是没有索引它们(正如@emddudley最初评论的那样)。他们在网站上的任何地方都没有说明这一点,但如果您要求支持,他们会告诉您:

From: Tim Pease
We have stopped adding newly pushed code into our codesearch index. The volume of code has outgrown our current search index, and we are working on moving to a more scalable search architecture. I'm sorry for the annoyance. We do not have an estimate for when this new search index will be up and running, but when it is ready a blog post will be published (https://github.com/blog).

令人恼火的是,除了缺少结果(也可能来自错误的查询),没有办法分辨哪些存储库没有索引。

除了等待他们写博客(或者在这里观看)之外,也没有办法跟踪这个问题。

From: Tim Pease
I am afraid our issue tracker is internal, but we can notify you as soon as the new search index is up and running.


谷歌允许你在项目中搜索,但不能搜索代码:(

网址:https://github.com/createjs/easeljs test