Шукайте код у проекті Github


272

Чи є спосіб похвалитися чимось усередині коду проекту Github?

Я міг би витягнути джерело та зіткнути його локально, але мені було цікаво, чи можливо це через веб-інтерфейс чи сторонній варіант.

Ідеї?


також замовлення code.ohloh.net :)
obimod


1
Відкрили запит на функцію за адресою: github.com/isaacs/github/isissue/1495
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Відповіді:


255

Оновлення січня 2013 року: прийшов абсолютно новий пошук! , заснований на elasticsearch.org :

Пошук статистика в рубіновому репо буде виражений як stat repo:ruby/ruby, і тепер буде просто працювати TM .
(ім'я репо не відрізняється від регістру: test repo:wordpress/wordpressповертає те саме, що test repo:Wordpress/Wordpress)

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

Дасть:

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

І у вас є багато інших прикладів пошуку, заснованих на послідовниках , на вилах , або ...


Оновлення липня 2012 року (старі часи луценового пошуку та погана індексація коду в поєднанні зі зламаним графічним інтерфейсом, зберігається тут для архіву):

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

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

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

Більш дозвільні результати пошуку в GitHub


Початкова відповідь та ілюстрація колишнього випуску (вересень 2012 => березень 2012)

Ви можете скористатися формою розширеного пошуку GitHub :

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

Наприклад, використовуйте repo:username/repo-nameдирективу для обмеження пошуку в сховищі коду .
Початкова Advanced Searchсторінка " " включає розділ:

Пошук коду :

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

  • мова language:
  • назва сховища (включаючи ім’я користувача) repo:
  • шлях до файлу path:

Отже, якщо ви вибрали " Code" селектор пошуку, ваш запит для тексту в рамках репо буде спрацьовувати:

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


Що неймовірно не корисно від GitHub, це те, що:

  • якщо ви забудете поставити потрібний селектор пошуку (тут " Code"), ви отримаєте повідомлення про помилку:
    " Invalid search query. Try quoting it."

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

  • повідомлення про помилку зовсім не допомагає.
    Жодна сума " quoting it" не позбавить вас від цієї помилки.

  • Як тільки ви отримаєте це повідомлення про помилку, ви не отримаєте розділи, що нагадують про правильну асоціацію між селекторами пошуку (" Repositories", " Users" або " Language") та (правильними) пошуковими фільтрами (тут " repo:").
    Будь-яка подальша спроба, яку ви не зробите, не відображатиме ці асоціації (селектори-фільтри) назад. Тільки повідомлення про помилку, яке ви бачите вище ...
    Єдиний спосіб повернути ці масиви - натиснути піктограму " Advance Search":

Значок попереднього пошуку на 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 насправді не порушений. Тільки їх GUI є ...)

Отже, щоб скласти резюме, якщо ви хочете "потягнутись за щось усередині коду проекту Github", як OP Ben Ben Humphreys , не забудьте вибрати " Code" селектор пошуку ...


Ви впевнені, я спробував repo:"jruby/jruby" stat repo:"jruby" stat jruby: statжодну з цих робіт
Том Х,

@TomH: на перший погляд, це може бути помилка на стороні GitHub, як це коментується на superuser.com/a/179900/141
VonC

1
@DannyStaple Ну, вони, здається, знають про це, якщо подивитися на місію, описану в github.com/blog/1116-tim-pease-is-a-githubber : "Тім, швидше за все, буде [...] зламати покращений досвід пошуку для всіх ресурсів GitHub ". Обов’язково відповідайте на їх твіт GitHub ( twitter.com/#!/github/status/197070106768048128 ), як я це робив ( twitter.com/#!/VonC_/status/197565733830541313 )
VonC

9
FWIW Я зв’язався з GitHub, оскільки не отримав жодних результатів пошуку при обмеженні пошуку на репост. Тім Піз відповів, що у них виникають труднощі з обсягом індексів репо, тому вони перейшли на шаруваті індексні сервери. Немає ETA, коли всі репости будуть переміщені.
М. Дадлі

3
Я тільки що скористався порадою цієї відповіді, і він працює і для мене, але я маю додати ще один застереження. Ім’я репо завжди має бути малим, навіть якщо GitHib перераховує його скрізь по-іншому. Наприклад, (після встановлення випадаючого коду тощо, як зазначено вище) спробуйте той же пошук з: repo: wordpress / wordpress vs repo: WordPress / WordPress ... тільки перший дасть результати.
етанпіль

22

Останні приватні сховища мають поле пошуку для пошуку через це репо.

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

Однак, схоже, ця функція недоступна для публічних сховищ.


1
Цікаво, чи це низько комерційний крок, щоб змусити людей перейти на платну версію? Це не схоже на github, але все ж.
Sylvain

3
@Sylvain Не думаю, що це робиться як заохочення до оновлення, оскільки навіть після оновлення ви не отримаєте це поле пошуку для публічних сховищ. Натомість, я думаю, що основний пошук використовує індекс, який не включає приватні сховища, і тому ви не втрачаєте функціональність під час оплати приватного сховища, їм довелося додати інший спосіб пошуку лише через це приватне сховище, отже, додатковий текстове поле.
авернет

2
Уявіть, що накладні дані мають індекс пошуку для кожного рядка коду в кожному репо! Божевільний! Ось чому вони роблять це лише для приватних репостів ..
Джоні Нотт

1
Пошук зараз знаходиться в заголовку, як і глобальний пошук.
Тиб

20

ОНОВЛЕННЯ

Злом закладених нижче закладок зламаний через проблеми з 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 : на сторінці, пошук аяксифікованого коду .

CAVEAT Github повинен індексувати репо, перш ніж ви зможете шукати його.

Перед закладкою

Абракадабра ...

Після - подивіться у другому меню за крайніми лівими вкладками: Файли, Коміти, Гілки ...

Ось зразок пошуку з анотованого сховища специфікації ECMAScript 5.1:

Зразок пошуку в описуваному сховищі специфікацій ECMAScript 5.1


Коли я використовую плагін (Chrome), він чудово працює у репо-скрипті scchdot / github-code, але не в будь-якому іншому репо.
forforf

Він повинен працювати на домашній сторінці будь-якого репо. Можливо, ви намагаєтеся з іншої сторінки? Я розмістив скріншот зразкового пошуку в іншому сховищі в своєму пості.
fny

Ага! Я фактично виявив, чому ці пошуки, можливо, не вдалися: РЕПО має дочекатися своєї черги для індексації. Зважаючи на активні сховища на мільйон, я підозрюю, що це забирає трохи часу.
fny

2
@ user456584 це новина для мене. Ви можете також повідомити Google і Mozilla .
fny

2
Я зрозумів, чому плагін не працює, тому що ім'я репо має бути нижчим регістром. (Дивіться мій коментар до відповіді VonC вище). Я вже подав патч на GitHub, сподіваюся, його автор побачить. github.com/skratchdot/github-code-search.user.js/pull/5
етанпіль

10

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

Від: Тім Піз
Ми припинили додавати щойно висунутий код у наш індекс пошуку коду. Обсяг коду переріс наш поточний індекс пошуку, і ми працюємо над переходом до більш масштабованої архітектури пошуку. Мені шкода роздратування. У нас немає прогнозу, коли цей новий індекс пошуку буде запущений, але коли він буде готовий, буде опубліковано повідомлення в блозі (https://github.com/blog).

Прикро не існує способу сказати, які сховища не індексуються, крім відсутності результатів (що також може бути з поганого запиту).

Також немає жодного способу відстежити цю проблему, окрім того, як чекати, коли вони будуть вести її в блозі (або дивитися тут на SO).

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


Вони, принаймні, повинні згадати, що деякі результати пошуку можуть бути опущені. Він повністю смокче, коли я перетворюю код і шукаю виникнення коду, які там є, але GitHub не згадується.
Нікодимуз


0

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.