Поиск кода внутри проекта Github

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

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

Идеи?

Ответ 1

Обновление Январь 2013: появился новый поиск!, на основе elasticsearch.org:

Поиск stat в рубиновом репо будет выражаться как 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." исчез при использовании поиска по умолчанию селектор "Все":)

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

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

GitHub more permissive search results


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

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

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

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

Код Поиск:

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

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

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

Good Search selector


Что невероятно unhelpful из 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! (и массивы, отображающие ассоциацию "Селекторы-фильтры", ушли)
  • вы заметили, что "Поиск" селектора thingy, выберите первый вариант "Repositories" ( "Да! Я хочу искать в репозиториях..." )
    = > FAIL!
  • Ужасно, вы выбираете следующий выбор селекторов (здесь, "Users" ), даже не глядя на указанный селектор, просто чтобы дать ему еще одну попытку...
    = > FAIL!
  • "Отверните это, поиск GitHub сломанный! Я ушел отсюда!"
    ...
    (расширенный поиск GitHub на самом деле не нарушен. Только их графический интерфейс...)

Итак, чтобы повторить, если вы хотите "grep для чего-то внутри кода проекта Github", как OP Ben Humphreys, не забудьте выбрать Селектор поиска Code...

Ответ 2

В недавних частных хранилищах есть поле поиска для поиска через это репо.

enter image description here

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

Ответ 3

UPDATE

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

К счастью, у Github теперь "Полный поиск нового кода" , который делает работу превосходно.


Оформить заказ этого вуду: Поиск кода Github userscript.

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

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

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

Ответ 4

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

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

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

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

От: Tim Pease
Я боюсь, что наш трекер ошибок является внутренним, но мы можем уведомить вас, как только появится новый индекс поиска.

Ответ 6

Я ищу исходный код в репозиториях Github с бесплатным расширением Sourcegraph Chrome ... Но я сначала скачал Chrome, я знал, что другие браузеры поддерживают его, например, - и, возможно, только - Firefox.

Я пролистал Документацию по расширению Chrome SourceForge, а затем также посмотрел, что мне нужно для поиска имен каталогов с помощью самой поисковой системы Github, прочитав некоторые из Документа по поиску кодовой базы Github.

Ответ 7

Документация GitHub гласит -

octocat in:file соответствует коду, где в файле появляется "octocat" содержание.