Шукайте код у проекті 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.