Mã tìm kiếm trong một dự án Github


272

Có cách nào để grep cho một cái gì đó bên trong mã của dự án Github không?

Tôi có thể lấy nguồn và grep nó cục bộ, nhưng tôi tự hỏi liệu nó có thể thông qua giao diện web hoặc một sự thay thế của bên thứ 3 không.

Ý tưởng?


đồng thời kiểm tra mã.ohloh.net :)
obimod

Đối với repos Java / Scala, hãy thử Tìm kiếm mã ngữ nghĩa
Codota

1
Đã mở một yêu cầu tính năng tại: github.com/isaacs/github/issues/1495
Ciro Santilli 冠状 病 六四

Câu trả lời:


255

Cập nhật tháng 1 năm 2013: một tìm kiếm hoàn toàn mới đã đến! , dựa trên elaticsearch.org :

Một tìm kiếm cho stat trong repo ruby ​​sẽ được thể hiện dưới dạng stat repo:ruby/ruby, và bây giờ sẽ chỉ hoạt động TM .
(tên repo không phân biệt chữ hoa chữ thường: test repo:wordpress/wordpresstrả về giống như test repo:Wordpress/Wordpress)

nhập mô tả hình ảnh ở đây

Sẽ cho:

nhập mô tả hình ảnh ở đây

Và bạn có nhiều ví dụ khác về tìm kiếm, dựa trên người theo dõi hoặc trên dĩa hoặc ...


Cập nhật tháng 7 năm 2012 (ngày cũ của tìm kiếm Lucene và lập chỉ mục mã kém, kết hợp với GUI bị hỏng, được giữ ở đây để lưu trữ):

Tìm kiếm (dựa trên SolrQuerySyntax ) giờ đây dễ dàng hơn và "" đáng sợ Invalid search query. Try quoting it.sẽ biến mất khi sử dụng bộ chọn tìm kiếm mặc định "Mọi thứ" :)

(Tôi cho rằng tất cả chúng ta đều có thể hơn Tim Pease , người có một trong những mục tiêu của mình là "hack các trải nghiệm tìm kiếm được cải thiện cho tất cả các thuộc tính GitHub ", và tôi đã đề cập đến câu hỏi Stack Overflow này vào thời điểm đó;))

Dưới đây là một minh họa về một grep trong mã ruby: nó sẽ tìm kiếm repos và người dùng, nhưng cũng cho thứ tôi muốn tìm kiếm ở vị trí đầu tiên: mã!

GitHub kết quả tìm kiếm dễ dàng hơn


Câu trả lời ban đầu và minh họa về vấn đề cũ (tháng 9 năm 2012 => tháng 3 năm 2012)

Bạn có thể sử dụng biểu mẫu GitHub tìm kiếm nâng cao :

  • Chọn Code, Repositorieshoặc Userstừ trình đơn thả xuống và
  • sử dụng các tiền tố tương ứng được liệt kê cho loại tìm kiếm đó .

Ví dụ: Sử dụng lệnh repo:username/repo-nameđể giới hạn tìm kiếm trong kho lưu trữ .
Trang "" ban đầu Advanced Searchbao gồm phần:

Tìm kiếm :

Tìm kiếm Mã sẽ xem qua tất cả các mã được lưu trữ công khai trên GitHub. Bạn cũng có thể lọc theo:

  • ngôn ngữ language:
  • tên kho lưu trữ (bao gồm tên người dùng) repo:
  • đường dẫn tập tin path:

Vì vậy, nếu bạn chọn Codebộ chọn tìm kiếm "", thì truy vấn của bạn cho một văn bản trong một repo sẽ hoạt động:

Công cụ chọn tìm kiếm tốt


Điều vô cùng không có ích từ GitHub là:

  • nếu bạn quên đặt bộ chọn tìm kiếm phù hợp (ở đây " Code"), bạn sẽ nhận được thông báo lỗi:
    " Invalid search query. Try quoting it."

Chọn sai cho trình quay mã

  • thông báo lỗi không giúp bạn chút nào.
    Không có số lượng " quoting it" sẽ giúp bạn thoát khỏi lỗi này.

  • một khi bạn nhận được thông báo lỗi đó, bạn sẽ không nhận được các phần nhắc nhở bạn về mối liên hệ đúng giữa các bộ chọn tìm kiếm (" Repositories", " Users" hoặc " Language") và các bộ lọc tìm kiếm (bên phải) (ở đây " repo:").
    Bất kỳ nỗ lực nào nữa bạn sẽ không hiển thị lại các liên kết đó (bộ chọn-bộ lọc). Chỉ thông báo lỗi bạn thấy ở trên ...
    Cách duy nhất để lấy lại các mảng đó là bằng cách nhấp vào Advance Searchbiểu tượng "":

Biểu tượng tìm kiếm nâng cao trên GitHub

  • các " Everything" tìm kiếm chọn, đó là mặc định, thực sự là sai một cho tất cả các bộ lọc tìm kiếm! Ngoại trừ " language:" ...
    (Bạn có thể tưởng tượng / giả sử rằng " Everything" sẽ giúp bạn chọn bất kỳ bộ chọn tìm kiếm nào thực sự hoạt động với bộ lọc tìm kiếm " repo:", nhưng không. Điều đó quá dễ dàng)

  • bạn không thể chỉ định bộ chọn tìm kiếm mà bạn muốn thông qua trường " Advance Search"!
    (nhưng bạn có thể cho " language:", mặc dù " Search Language" là một hộp tổ hợp khác ngay bên dưới " Search for" 'loại' một ...)

Chọn sai tìm kiếm


Vì vậy, trải nghiệm của người dùng thường như sau:

  • bạn bấm " Advanced Search", lướt qua các phần của bộ lọc và chú ý đến phần bạn muốn sử dụng: " repo:"
  • bạn thực hiện tìm kiếm nâng cao đầu tiên " repo:jruby/jruby stat", nhưng với bộ chọn Tìm kiếm mặc định " Everything"
    => FAIL! (và các mảng hiển thị liên kết "Bộ chọn-Bộ lọc" đã biến mất )
  • bạn nhận thấy rằng "Tìm kiếm" bộ chọn điều, chọn lựa chọn đầu tiên " Repositories" ("Dah! Tôi muốn tìm kiếm trong kho ...")
    => FAIL!
  • chán nản, bạn chọn lựa chọn tiếp theo của bộ chọn (ở đây, " Users"), mà không cần nhìn vào bộ chọn đã nói, chỉ để thử thêm một lần nữa ...
    => FAIL!
  • "Bắt vít cái này, tìm kiếm GitHub bị hỏng ! Tôi ra khỏi đây!"
    ...
    (Tìm kiếm nâng cao của GitHub thực sự không bị hỏng. Chỉ GUI của họ là ...)

Vì vậy, để tóm tắt lại, nếu bạn muốn "grep cho thứ gì đó bên trong mã của dự án Github", như OP Ben Humphreys , đừng quên chọn " Code" bộ chọn tìm kiếm ... "


bạn có chắc không, tôi đã thử repo:"jruby/jruby" stat repo:"jruby" stat jruby: statkhông cái nào hoạt động
Tom H

@TomH: thoạt nhìn, nó có thể là một lỗi ở phía GitHub, như đã nhận xét tại superuser.com/a/179900/141
VonC

1
@DannyStaple Chà, dường như họ nhận thức được vấn đề, nếu bạn nhìn vào nhiệm vụ được mô tả trong github.com/blog/1116-tim-pease-is-a-githubber : "Rất có thể Tim sẽ là [...] hack các trải nghiệm tìm kiếm được cải thiện cho tất cả các thuộc tính GitHub ". Đảm bảo trả lời tweet GitHub của họ ( twitter.com/#!/github/status/197070106768048128 ), giống như tôi đã làm ( twitter.com/#!/VonC_/status/197565733830541313 )
VonC

9
FWIW Tôi đã liên hệ với GitHub vì tôi chưa nhận được bất kỳ kết quả tìm kiếm nào khi hạn chế tìm kiếm trong kho của tôi. Tim Pease trả lời rằng họ gặp khó khăn với khối lượng chỉ mục repo, vì vậy họ đã di chuyển đến các máy chủ chỉ mục bị loại bỏ. Không có ETA khi tất cả các repos sẽ được di chuyển.
M. Dudley

3
Tôi vừa sử dụng lời khuyên của câu trả lời này và nó cũng đang làm việc cho tôi, nhưng tôi có một lời cảnh báo để thêm vào. Tên repo phải luôn được viết thường ngay cả khi GitHib liệt kê nó ở mọi nơi khác theo một cách khác. Ví dụ: (sau khi cài đặt thả xuống Mã, v.v., như trên), hãy thử tìm kiếm tương tự với: repo: wordpress / wordpress vs repo: WordPress / WordPress ... chỉ có cái đầu tiên mới mang lại kết quả.
ethanpil

22

Các kho riêng gần đây có một trường tìm kiếm để tìm kiếm thông qua repo đó.

nhập mô tả hình ảnh ở đây

Mặc dù vậy, có vẻ như chức năng này không có sẵn cho các kho lưu trữ công cộng.


1
Tôi tự hỏi nếu đây là một động thái thương mại thấp để làm cho mọi người nâng cấp lên phiên bản trả tiền? Nghe không giống github nhưng vẫn vậy.
Sylvain

3
@Sylvain Bạn không nghĩ rằng nó được thực hiện như một sự khuyến khích để nâng cấp, vì ngay cả sau khi nâng cấp, bạn sẽ không nhận được trường tìm kiếm đó cho các kho lưu trữ công cộng. Thay vào đó, tôi nghĩ rằng tìm kiếm chính sử dụng một chỉ mục không bao gồm các kho riêng và vì vậy bạn không mất chức năng khi trả tiền cho một kho lưu trữ riêng tư, họ phải thêm một cách khác để chỉ tìm kiếm qua kho riêng đó, do đó bổ sung trương Văn bản.
avernet

2
Hãy tưởng tượng chi phí của họ có một chỉ mục tìm kiếm cho mỗi dòng mã trong mỗi repo! Điên! Đó là lý do tại sao họ chỉ làm điều đó cho các repos tư nhân ..
Jonny Nott

1
Tìm kiếm hiện nằm trong tiêu đề, giống như tìm kiếm toàn cầu.
Tib

20

CẬP NHẬT

Việc hack bookmarklet dưới đây bị hỏng do sự cố XHR và thay đổi API.

Rất may, Github hiện có "Tìm kiếm mã hoàn toàn mới" , công việc này rất tuyệt vời.


Kiểm tra voodoo này: mã người dùng tìm kiếm mã Github .

Thực hiện theo các hướng dẫn ở đó hoặc nếu bạn ghét làm đầy trình duyệt của mình với các tập lệnh và tiện ích mở rộng, hãy sử dụng gói tài liệu được đánh dấu của tôi:

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

Lưu nguồn ở trên dưới dạng URL của dấu trang mới. Duyệt đến bất kỳ repo Github nào, nhấp vào dấu trang và bam : in-page, tìm kiếm mã ajaxified .

CAVEAT Github phải lập chỉ mục một repo trước khi bạn có thể tìm kiếm nó.

Trước Bookmarklet

Abracadabra ...

Sau - Tìm trong thanh thực đơn thứ hai sau các tab ngoài cùng bên trái: Tệp, Cam kết, Chi nhánh ...

Đây là một tìm kiếm mẫu từ kho lưu trữ đặc tả ECMAScript 5.1 được chú thích:

Tìm kiếm mẫu trong kho lưu trữ đặc tả ECMAScript 5.1 được chú thích


Khi tôi sử dụng plugin (Chrome), nó hoạt động tốt trong repo Scratchdot / github-code-search, nhưng không phải trong bất kỳ repo nào khác.
forforf

Nó sẽ hoạt động trong bất kỳ trang chủ của repo. Có lẽ bạn đang cố gắng từ một trang khác? Tôi đã đăng một ảnh chụp màn hình của một tìm kiếm mẫu trong một kho lưu trữ khác trong bài viết của tôi.
fny

Aha! Tôi thực sự phát hiện ra lý do tại sao những tìm kiếm đó có thể thất bại: một repo phải chờ đến lượt để lập chỉ mục. Với hàng trăm kho lưu trữ đang hoạt động, tôi nghi ngờ rằng sẽ mất một chút thời gian.
fny

2
@ user456584 đó là tin tức với tôi. Bạn có thể muốn cho GoogleMozilla biết.
fny

2
Tôi đã tìm ra lý do tại sao plugin không hoạt động, vì tên repo cần phải viết thường. (Xem bình luận của tôi để trả lời của VonC ở trên). Tôi đã gửi một bản vá trên GitHub, hy vọng tác giả ban đầu sẽ thấy nó. github.com/skratchdot/github-code-search.user.js/pull/5
ethanpil

10

Mặc dù câu trả lời của @ VonC hoạt động đối với một số kho lưu trữ, nhưng thật không may cho nhiều kho lưu trữ mà bạn không thể ngay bây giờ. Github chỉ đơn giản là không lập chỉ mục cho chúng (như nhận xét ban đầu bởi @emddudley). Họ chưa nói điều này ở bất cứ đâu trên trang web của họ, nhưng họ sẽ cho bạn biết nếu bạn yêu cầu hỗ trợ:

Từ: Tim Pease
Chúng tôi đã ngừng thêm mã mới được đẩy vào chỉ mục tìm kiếm mã của chúng tôi. Khối lượng mã đã vượt xa chỉ số tìm kiếm hiện tại của chúng tôi và chúng tôi đang nỗ lực chuyển sang kiến ​​trúc tìm kiếm có thể mở rộng hơn. Tôi xin lỗi vì sự khó chịu. Chúng tôi không có ước tính khi nào chỉ mục tìm kiếm mới này sẽ hoạt động, nhưng khi nó sẵn sàng, một bài đăng blog sẽ được xuất bản (https://github.com/blog).

Khó chịu là không có cách nào để biết kho nào không được lập chỉ mục ngoài việc thiếu kết quả (cũng có thể là từ một truy vấn xấu).

Cũng không có cách nào để theo dõi vấn đề này ngoài việc chờ họ viết blog (hoặc xem ở đây trên SO).

Từ: Tim Pease
Tôi sợ trình theo dõi vấn đề của chúng tôi là nội bộ, nhưng chúng tôi có thể thông báo cho bạn ngay khi chỉ mục tìm kiếm mới hoạt động.


Họ ít nhất nên đề cập rằng một số kết quả tìm kiếm có thể bị bỏ qua. Nó hoàn toàn hút khi tôi cấu trúc lại mã và tôi tìm kiếm các lần xuất hiện của mã nhưng không được GitHub đề cập.
Nicodemuz


0

Tôi tìm kiếm mã nguồn bên trong Kho lưu trữ Github bằng Tiện ích mở rộng nguồn Chrome miễn phí ... Nhưng tôi đã tải xuống Chrome trước , tôi biết các trình duyệt khác hỗ trợ mặc dù, chẳng hạn như - và có lẽ chỉ - Firefox.

Tôi đọc lướt qua Tài liệu mở rộng Chrome của SourceForge và sau đó tôi cũng xem xét những gì tôi cần để tìm kiếm tên thư mục với chính Công cụ tìm kiếm của Github, bằng cách đọc một số Tài liệu tìm kiếm Codebase của Github

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.