Github поиск по расширению файла

Обновлено: 04.07.2024

Вне зависимости от размера кодовой базы, часто возникает необходимость поиска места вызова/определения функции или получения истории изменения метода. Git предоставляет несколько полезных утилит, с помощью которых легко и просто осуществлять поиск по коду и коммитам. Мы обсудим некоторые из них.

Команда git grep

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

По умолчанию эта команда ищет по файлам в рабочем каталоге. В качестве первого варианта вы можете использовать любой из параметров -n или` --line-number`, чтобы распечатать номера строк, в которых Git нашел совпадения:

В дополнение к базовому поиску, показанному выше, git grep поддерживает множество других интересных параметров.

Например, вместо того, чтобы печатать все совпадения, вы можете попросить git grep обобщить выводимые командой данные, показав только те файлы, в которых обнаружены совпадения, вместе с количеством этих совпадений в каждом файле. Для этого потребуется параметр ` -c` или --count :

Если вас интересует контекст строки поиска, можно показать метод или функцию, в котором присутствует совпадение с помощью параметра -p или` --show-function`:

Здесь вы можете видеть, что gmtime_r вызывается из функций match_multi_number и match_digit в файле date.c (третье отображаемое совпадение представляет собой только строку, появившуюся в комментарии).

Вы также можете искать сложные комбинации строк, используя опцию --and , которая гарантирует, что будут отображены только строки, имеющие сразу несколько совпадений. Например, давайте поищем любые строки, которые определяют константу, имя которой содержит любую из подстрок «LINK» или «BUF_MAX», особенно в более старой версии кодовой базы Git, представленной тегом v1.8.0 (мы добавим параметры --break и --heading, которые помогут вывести результаты в более читаемом виде):

Команда git grep имеет несколько преимуществ перед поиском с помощью таких команд, как grep и ack . Во-первых, она действительно быстрая, во-вторых — git grep позволяет искать не только в рабочем каталоге, но и в любом другом дереве Git. Как вы видели, в прошлом примере мы искали в старой версии исходных кодов Git, а не в текущем снимке файлов.

Поиск в журнале Git

Например, если вы хотите найти, когда была добавлена константа ZLIB_BUF_MAX , то вы можете с помощью опции -S попросить Git показывать только те коммиты, в которых была добавлена или удалена эта строка.

Если мы посмотрим на изменения, сделанные в этих коммитах, то увидим, что в ef49a7a константа была добавлена, а в e01503b — изменена.

Если вам нужно найти что-то более сложное, вы можете с помощью опции -G передать регулярное выражение.

Поиск по журналу изменений строки

Другой, довольно продвинутый, поиск по истории, который бывает чрезвычайно полезным — поиск по истории изменений строки. Просто запустите git log с параметром -L , и он покажет вам историю изменения функции или строки кода в вашей кодовой базе.

Например, если мы хотим увидеть все изменения, произошедшие с функцией git_deflate_bound в файле zlib.c , мы можем выполнить git log -L :git_deflate_bound:zlib.c . Эта команда постарается определить границы функции, выполнит поиск по истории и покажет все изменения, которые были сделаны с функцией, в виде набора патчей в обратном порядке до момента создания функции.

Если для вашего языка программирования Git не умеет правильно определять функции и методы, вы можете передать ему регулярное выражение. Например, следующая команда выполнит такой же поиск как и предыдущая git log -L '/unsigned long git_deflate_bound/',/^>/:zlib.c . Также вы можете передать интервал строк или номер определённой строки и в этом случае вы получите похожий результат.

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

Поиск статистики в репо ruby ​​будет выражаться как test repo:wordpress/wordpress возвращает так же, как test repo:Wordpress/Wordpress )

введите описание изображения здесь

введите описание изображения здесь

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

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

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

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

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

GitHub более разрешительные результаты поиска

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

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

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

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

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

Хороший поиск селектора

Что невероятно бесполезно от GitHub, так это:

Неправильный селектор для файла кода

Значок предварительного поиска на GitHub

Everything Селектор поиска " ", который является настройкой по умолчанию, на самом деле является неправильным для всех фильтров поиска! За исключением " language: " .
(Вы можете представить / предположить, что " Everything " поможет вам выбрать любой селектор поиска, который действительно работает с поисковым фильтром " repo: ", но нет. Это было бы слишком просто)

Вы не можете указать нужный селектор поиска только через поле " Advance Search "!
(но вы можете использовать для " language: ", хотя " Search Language " - это еще одно поле со списком чуть ниже Search for "" типа ") .

Неверный селектор поиска

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

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

Итак, подведем итог: если вы хотите «найти что-то внутри кода проекта Github», как OP Ben Humphreys , не забудьте выбрать « Code » селектор поиска .

Поиск кода или разработчика по GitHub

Поиск кода или репозитория по GitHub

  • in:name — поиск по имени репозитория, то есть искомые слова буд у т искаться в наименовании репозиториев;

  • in:description — поиск по описанию репозит о ри я н а совпадение указанных слов поиска именно в описании;

  • in:readme — поиск по файлам README;

  • repo:owner/name — поиск по точному совпадению имени репозитория.

  • по размеру репозитория;

  • по количеству подписчиков;

  • по количеству вилок;

  • по количеству звезд;

  • по дате создания;

  • по дате последнего обновления;

  • по используемому языку программирования;

  • по теме;

  • по количеству тем;

  • по лицензии;

  • по видимости репозитория;

  • по наличию проблем с репозиторием;

  • по возможности оказать спонсорскую помощь;

  • и др.

Поиск разработчиков по GitHub

  1. Поиск по ключевым словам. К примеру, если вам необходим python-разработчик, то введите в поиске слово «python».

  2. Поиск по языкам программирования, которым и должен обладать искомый разработчик. Введите в поисковой строке любой язык программирования , и GitHub выдаст вам результат.

  3. П оиск по технологиям. Работает так же, как и с языками программирования : просто введите название необходимого фреймворка, который не является самостоятельным языком программирования.

  4. Искать по активности программиста. Обычно этот вид поиска осуществляют, когда уже нашли список потенциальных кандидатов, допустим , по языку программировани я . Далее в качестве фильтра можно отсеять тех, кто давно не проявлял активность на GitHub.

Заключение

Поиск нужного кода или разработчика по GitHub — это логично е действие , п отому что подобных специализированных площадок для программистов не так много. Вернее , они есть, но они не такого уровня, как GitHub.

С поиском кода вроде все ясно, поэтому сложностей возникнуть не должно. Тем более раз вы ищите код, то вы в не м к ак миниму м р азбираетесь. Сложнее с поиском разработчиков, потому что на GitHub очень много «пустышек», которые просто будут отнимать у вас время.

Мы будем очень благодарны

если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

Обновление январь 2013 года: новый поиск прибыла!, исходя из elasticsearch.org: Поиск стат в рубиновом РЕПО будет выражаться как [ стат РЕПО:Рубин/Рубин ][3], и теперь просто работают на<SUP-серфинг><суп>ТМ</SUP-серфинг></суп>. (название РЕПО не чувствительны к регистру: тест репо по:WordPress/вордпресс возвращает то же, что тест репо по:WordPress/Вордпресс ) Введите описание изображения здесь
Даст: Введите описание изображения здесь
И многие другие примеры запросов, на основании с подписчиками, или на вилах, или.

Обновление за июль 2012 г. (старые времена в Lucene поиск и бедная код индексирования, в сочетании с разбитыми Гуй, держали здесь для архива): Поиск (на основе SolrQuerySyntax) сейчас более снисходительными и страшный фильм "`неверный запрос. Попробуйте процитировать это.&я ушел при использовании по умолчанию поиск селектора "Все":) (Я полагаю, мы все можем чем Тим Пиз, который в одной из своих целей "и взлом на улучшение поиска впечатлений на GitHub свойства", и я действительно упоминал это переполнение стека вопрос в то время ;) ) Вот пример команды grep в код Ruby: она ищет РЕПО и пользователями, а также за то, что я хотел искать в первую очередь: код! Гитхаб более снисходительными Результаты поиска

Первоначальный ответ и иллюстрация к предыдущему вопросу (сентябрь. 2012 => март 2012 г.) Вы можете использовать расширенный GitHub в форме поиска:

  • Выбрать код , хранилищ или пользователи из выпадающего и
  • использовать соответствующие префиксы, перечисленных для этого типа поиска. Например, можно использовать РЕПО:имя пользователя/РЕПО-имя директива ограничивает поиск К код репозитории. Начальный " в расширенный поиск и" страница включает в себя раздел:

путь к файлу путь: Так что если вы выберите и" Код " и селектор поиск ваш запрос применение grep к для текста в РЕПО будет работать: Хороший селектор поиск

Что это невероятно бесполезный с GitHub, что:

Последние частные репозитории есть поле поиска для поиска через РЕПО.


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

Обновление

Букмарклет Hack ниже разбито из-за то XHR вопросы и изменения API.

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

Читайте также: