Поиск кода внутри проекта Github - PullRequest
242 голосов
/ 01 сентября 2010

Есть ли способ найти что-то в коде проекта Github?

Я мог бы извлечь источник и выполнить его локально, но мне было интересно, возможно ли это через веб-интерфейс или стороннюю альтернативу.

Идеи? * * 1005

Ответы [ 5 ]

241 голосов
/ 01 сентября 2010

Обновление в январе 2013 года: новый поиск прибыл! , на основе asticsearch.org :

Поиск статистики в рубиновом репо будет выражаться как stat repo:ruby/ruby и теперь будет работать только TM .
(имя репо не чувствительно к регистру: test repo:wordpress/wordpress возвращает то же, что и test repo:Wordpress/Wordpress)

enter image description here

даст:

enter image description here

И у вас есть много других примеров поиска, основанных на подписчиках , или на вилках , или ...


Обновление июль 2012 (старые времена поиска Lucene и плохая индексация кода в сочетании со сломанным графическим интерфейсом сохранены здесь для архива):

Поиск (основанный на SolrQuerySyntax ) теперь стал более разрешающим, и страшный "Invalid search query. Try quoting it." исчез при использовании селектора поиска по умолчанию"Все":)

(Полагаю, мы можем все, чем Тим Пиз , который преследовал в одной из своих целей "взлом улучшенного опыта поиска для всех свойств GitHub ", и Я упоминал этот вопрос переполнения стека в то время;))

Вот иллюстрация grep в коде ruby: он ищет репо и пользователей, но также для того, что я хотел найти в первую очередь: код!

GitHub more permissive search results


Первоначальный ответ и иллюстрация предыдущего вопроса (сентябрь 2012 => март 2012)

Вы можете использовать форму расширенного поиска GitHub :

  • Выберите Code, Repositories или Users из раскрывающегося списка и
  • использовать соответствующие префиксы, перечисленные для этого типа поиска .

Например, используйте директиву repo:username/repo-name, чтобы ограничить поиск хранилищем code .
Начальная страница "Advanced Search" содержит раздел:

Код Поиск:

При поиске кода будет просматриваться весь код, размещенный на GitHub. Вы также можете отфильтровать по:

  • язык language:
  • имя хранилища (включая имя пользователя) repo:
  • путь к файлу path:

Таким образом, если вы выберете селектор поиска "Code", тогда ваш запрос для текста в репо будет работать:

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» 'type' one ...)

Wrong search selector


Итак, пользовательский опыт обычно выглядит следующим образом:

  • вы нажимаете "Advanced Search", просматриваете те секции фильтров и замечаете тот, который хотите использовать: "repo:"
  • вы делаете первый расширенный поиск "repo:jruby/jruby stat", нос селектором поиска по умолчанию "Everything"
    => FAIL!(и массивы, отображающие ассоциацию «Фильтры-селекторы», ушли )
  • вы заметили, что «Поиск» селекторной вещи, выберите первый выбор "Repositories "(" Да! Я хочу искать в репозиториях ... ")
    => FAIL!
  • отклонено, вы выбираете следующий выбор селекторов (здесь," Users "), даже не глядя на упомянутый селектор, просто чтобы еще раз попробовать ...
    => FAIL!
  • "Винт, поиск по GitHub сломан ! I 'м отсюда! "
    ...
    (расширенный поиск в GitHub фактически не нарушен. Только их графический интерфейс ...)

ИтакНапомним, что если вы хотите «найти что-то внутри кода проекта Github», как OP Бен Хамфрис , не забудьте выбрать «Code» селектор поиска ...

22 голосов
/ 23 октября 2011

Последние частные репозитории имеют поле поиска для поиска в этом репо.

enter image description here

Удивительно, но эта функциональность недоступна для публичных репозиториев.

20 голосов
/ 23 марта 2012

ОБНОВЛЕНИЕ

Взлом букмарклета, приведенный ниже, сломан из-за проблем XHR и изменений API.

К счастью, у Github теперь есть «Поиск по всему новому коду», который отлично справляется со своей работой.


Оформить заказ вуду: Поиск кода пользователя Github .

Следуйте инструкциям там, или если выНенавижу раздувать ваш браузер с помощью скриптов и расширений, используйте мой пакет пользовательских сценариев с закладками:

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, щелкните по закладке и bam : на странице, поиск с помощью ajaxified кода .

CAVEAT Github должен индексировать aсделайте репо, прежде чем сможете его искать.

Before the Bookmarklet

Abracadabra ...

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

10 голосов
/ 31 августа 2012

Хотя ответ @ VonC работает для некоторых репозиториев, к сожалению, для многих репозиториев вы не можете прямо сейчас.Github просто не индексирует их (как первоначально писал @emddudley).Они нигде не заявили об этом на своем веб-сайте, но они скажут вам, если вы обратитесь в службу поддержки:

От: Тим Пиз
Мы прекратили добавлять вновь помещенный код в наш индекс поиска кода.Объем кода перерос наш текущий поисковый индекс, и мы работаем над переходом к более масштабируемой поисковой архитектуре.Я прошу прощения за раздражение.У нас нет оценки того, когда этот новый поисковый индекс будет запущен и работает, но когда он будет готов, будет опубликовано сообщение в блоге (https://github.com/blog).

К сожалению, нет способа узнать, какие репозитории не работаютиндексируется, кроме отсутствия результатов (что также может быть связано с неверным запросом).

Также нет способа отследить эту проблему, кроме как ждать, пока они не опубликуют ее (или посмотреть здесь на SO).

От: Тим Пиз
Боюсь, наш трекер проблем является внутренним, но мы можем уведомить вас, как только будет запущен новый поисковый индекс.

2 голосов
/ 03 мая 2012

Google позволяет искать в проекте, но не код: (

сайт: https://github.com/CreateJS/EaselJS тест

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...