2010-09-01 76 views
207

有沒有辦法在grep裏面找到Github項目代碼裏面的東西?在Github項目中搜索代碼

我可以在本地拉來源和grep,但我想知道是否可以通過Web界面或第三方替代方法。

想法?

+0

也會檢出http://code.ohloh.net :) – obimod 2013-04-16 21:01:54

+0

對於Java/Scala的回購協議,嘗試[Codota語義代碼搜索(https://www.codota.com/index-your-repo) – drorw 2015-10-13 11:30:08

回答

225

更新2013年1月:一個brand new search has arrived!,基於elasticsearch.org

紅寶石回購中對統計的搜索將被表示爲stat repo:ruby/ruby,而現在只是工作TM
(回購名稱不區分大小寫:test repo:wordpress/wordpress返回相同的test repo:Wordpress/Wordpress

enter image description here

會給:

enter image description here

而且你搜索的許多其他例子,基於on followers ,或on forks,或...


更新2012年7月(舊Lucene搜索和代碼索引差,破GUI相結合的日子裏,保持這裏存檔):

搜索(基於SolrQuerySyntax)現在更加寬容和可怕的「Invalid search query. Try quoting it.」 )

;使用 默認搜索選擇「一切」 :)

(我想我們都可以比Tim Pease,其中有在他的目標"hacking on improved search experiences for all GitHub properties」之一,I did mention this Stack Overflow question的時間)時,走了

下面是一個紅寶石代碼中的grep插圖:它將尋找回購站和用戶,但爲我想搜索的第一個地方:代碼!

GitHub more permissive search results


最初的回答和前一個問題的說明(9月2012 => 2012年3月)

可以使用advanced search GitHub form

  • 選擇CodeRepositoriesUsers from the drop-down and
  • 使用爲該搜索類型列出的相應前綴

例如,使用repo:username/repo-name指令限制搜索到代碼庫。
最初的「Advanced Search」頁面包括以下部分:

代碼搜索:

密碼搜索將尋找通過所有在GitHub上公開託管的代碼。您還可以過濾通過:

  • 語言language:
  • 倉庫名(包括用戶名)repo:
  • 文件路徑path:

所以,如果你選擇「Code「搜索選擇,然後將查詢grepping爲回購協議中的文本將工作:

Good Search selector


什麼是難以置信從GitHub無益是:

  • 如果你忘記把正確的搜索選擇器(這裏「Code」),你會得到一個錯誤信息:
    Invalid search query. Try quoting it.

Wrong selector for the code filer

  • 的錯誤信息不會幫你的。
    沒有任何數額的「quoting it」會讓你擺脫這個錯誤。

  • ,一旦你得到這個錯誤消息,你沒有得到的部分搜索之間選擇(「Repositories」,‘Users’或「Language」),提醒您的權利協會和(右)搜索過濾器(這裏是「repo:」)。
    您做的任何進一步嘗試都不會顯示那些關聯(選擇器過濾器)。只有你在上面看到的錯誤信息...
    找回這些陣列的唯一方法是通過點擊「Advance Search」圖標:

Advance Search Icon on GitHub

  • 的「Everything」搜索選擇,這是默認的,實際上是錯誤一個用於全部的搜索過濾器!除了「language:」 ...
    (你可以想象/假設「Everything」將幫助你選擇任何搜索選擇實際上是與搜索過濾器「repo:」的作品,但沒了。這將是太容易了)

  • 您無法單獨通過「Advance Search」字段指定所需的搜索選擇器!
    (但你可以爲 「language:」,即使 「Search Language」 是另一個組合框正下方的 「Search for」 '型' 一個......)

Wrong search selector


所以,用戶的體驗通常如下:

  • 你點擊「Advanced Search」,瀏覽那些秒過濾器系統蒸發散,並注意要使用一個:「repo:
  • 你做第一個高級搜索「repo:jruby/jruby stat」,但與默認搜索選擇「Everything
    =>FAIL! (和顯示協會「選擇器,過濾器」的陣列是
  • 您發現「搜索」選擇啄,選擇第一選擇「Repositories」(「大新!我希望庫中進行搜索。 ..「)
    =>FAIL
  • 沮喪,你選擇下一個選擇器的選擇(這裏,「Users」),甚至沒有看到所述選擇器,只是給它一個嘗試...
    =>FAIL
  • 「擰這個,GitHub搜索是!我要離開這裏!」
    ...
    (GitHub的高級搜索實際上是不破。只有他們的GUI是...)

因此,回顧一下,如果你想「grep命令裏面的東西Github項目的代碼「,因爲OP Ben Humphreys,不要忘記選擇」Code「搜索選擇器...

+0

你確定,我試過'repo:「jruby/jruby」stat''repo:「jruby」stat'' jruby:stat'其中的任何一個都沒有作用 – 2012-03-13 12:35:58

+0

@TomH:乍一看,它可能是GitHub端的一個bug,在http://superuser.com/a/179900/141 – VonC 2012-03-13 12:59:58

+0

@TomH評論:經過來自「社區」的有用編輯之後,我在我的答案中添加了插圖,以顯示高級搜索'repo:jruby/jruby stat'(這裏不需要雙引號)可以工作。畢竟,這不是一個錯誤。 – VonC 2012-03-18 10:41:36

22

最近的私人存儲庫具有用於搜索該存儲庫的搜索字段。

enter image description here

令人困惑,它看起來像這樣的功能是不提供給公共庫,雖然。

+1

我想知道這是否是一個低下的商業舉措,讓人們升級到付費版本?聽起來不像github,但仍然。 – Sylvain 2012-02-06 13:09:33

+3

@Sylvain它不認爲這是升級的鼓勵,因爲即使在升級之後,你也不會獲得公共倉庫的搜索字段。相反,我認爲主搜索使用的索引不包含私有存儲庫,因此您在支付私有存儲庫時不會失去功能,他們必須添加另一種方法來僅搜索私有存儲庫,因此額外文本域。 – avernet 2012-02-29 23:43:39

+2

想象一下,他們在每個回購的每一行代碼中都有搜索索引的開銷!瘋!這就是爲什麼他們只做私人回購。 – 2012-11-14 12:10:38

20

UPDATE

的書籤以下劈由於XHR問題和API的變化打破。

謝天謝地,Github現在有"A Whole New Code Search",它的工作非常出色。


結帳這個巫術:Github code search userscript

按照指示那裏,或者如果你恨與 腳本和擴展腹脹您的瀏覽器,用我的userscript的bookmarkified束:

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

保存以上爲新書籤的網址來源。瀏覽到任何 Github回購,點擊書籤,bam頁內,ajaxified代碼 搜索

CAVEAT Github必須索引一個回購,然後才能搜索它。

Before the Bookmarklet

胡言亂語......

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

下面是註釋的ECMAScript 5.1規範中的示例搜索 庫:

Sample search in the annotated ECMAScript 5.1 specification repository

+0

當我使用插件(Chrome)時,它在scratchdot/github-code-search倉庫中工作正常,但沒有在任何其他倉庫中使用。 – forforf 2012-04-03 15:17:20

+0

它應該在任何回購的主頁中工作。也許你正在嘗試從不同的頁面? 我在我的文章中發佈了一個示例搜索的屏幕截圖,位於不同的存儲庫中。 – fny 2012-04-03 22:09:54

+0

是的,它似乎現在工作,非常有幫助,謝謝! – forforf 2012-04-10 17:52:43

10

雖然@ VonC的答案適用於某些存儲庫,不幸的是,許多你現在不能倉庫。 Github根本就沒有對它們進行索引(正如@emddudley最初所評論的那樣)。他們沒有說明在其網站上這樣的任何地方,但他們會告訴你,如果你問的支持:

來源:蒂姆·皮斯
我們已停止添加新推的代碼到我們於codesearch指數。代碼量超過了我們當前的搜索索引,並且我們正在努力轉向更具擴展性的搜索體系結構。我爲這個煩惱感到抱歉。我們沒有估計這個新搜索索引何時開始運行,但是當它準備好時,博客文章將發佈(https://github.com/blog)。

惱人的是,除了缺少結果(也可能來自錯誤的查詢)之外,沒有辦法知道哪些存儲庫沒有被索引。

除了等待他們發​​布博客(或在此觀看)之外,沒有辦法跟蹤這個問題。

來源:蒂姆·皮斯
恐怕我們的問題跟蹤器是內部的,但我們可以儘快通知您爲新的搜索索引是啓動和運行。

+2

非常有趣的反饋。 +1 – VonC 2012-08-31 15:48:14

+1

soooooo令人沮喪:( – 2012-12-20 23:22:03

+0

)他們至少應該提到一些搜索結果可能會被省略。當我重構代碼時,它會完全吸引人,並且我搜索那些沒有被GitHub提及的代碼。 – Nicodemuz 2016-05-17 07:46:14