439 votes

Code de la recherche à l'intérieur d'un projet Github

Est-il un moyen de grep pour quelque chose à l'intérieur d'un Github du projet de code?

J'ai pu en tirer de la source et de grep localement, mais je me demandais si il est possible via l'interface web ou une 3e partie de l'alternative.

Des idées?

311voto

VonC Points 414372

Mise à jour janvier 2013: une nouvelle marque de recherche est arrivé!, basé sur elasticsearch.org:

Une recherche de stat dans le ruby repo sera exprimé en stat repo:ruby/ruby, et maintenant juste travaillerTM.
(les pensions de nom n'est pas sensible à la casse: test repo:wordpress/wordpress renvoie le même que test repo:Wordpress/Wordpress)

enter image description here

Donnera:

enter image description here

Et vous avez de nombreux autres exemples de recherche, basée sur les suiveurs, ou sur les fourches, ou...


Mise à jour en juillet 2012 (vieux jours de recherche Lucene et les pauvres code d'indexation, combiné avec un GUI, conservé ici pour archive):

La recherche (basé sur SolrQuerySyntax) est maintenant plus permissif et le redoutable "Invalid search query. Try quoting it." est allé lors de l'utilisation de la valeur par défaut de recherche sélecteur de "Tout":)

(Je suppose que nous pouvons tous que Tim Pease, qui avait dans un de ses objectifs est de"hacking sur l'amélioration de la recherche d'expériences pour tous GitHub propriétés", et j'ai fait mention de ce Débordement de Pile question à l'époque ;) )

Voici une illustration d'un grep dans le code ruby: il regarde pour le repos et les utilisateurs, mais aussi pour ce que je voulais de recherche en premier lieu: le code!

GitHub more permissive search results


Début de réponse et l'illustration de la première de ces questions (Sept. 2012 => Mars 2012)

Vous pouvez utiliser la recherche avancée GitHub forme:

  • Choisissez Code, Repositories ou Users à partir de la liste déroulante et
  • utiliser les préfixes correspondant répertorié pour ce type de recherche.

Par exemple, l'Utilisation de l' repo:username/repo-name directive pour limiter la recherche à un code de référentiel.
La première "Advanced Search" page comprend la section:

Code De Recherche:

La recherche de Code va chercher dans tout le code publiquement hébergé sur GitHub. Vous pouvez également filtrer par :

  • la langue language:
  • le nom du dépôt (y compris le nom d'utilisateur) repo:
  • le chemin du fichier path:

Donc, si vous sélectionnez l'option "Code" recherche du sélecteur, puis votre requête grepping pour un texte dans un repo:

Good Search selector


Ce qui est incroyablement inutile de GitHub, c'est que:

  • si vous oubliez de mettre le droit de recherche sélecteur (ici "Code"), vous obtiendrez un message d'erreur:
    "Invalid search query. Try quoting it."

Wrong selector for the code filer

  • le message d'erreur ne vous aide pas du tout.
    Aucune quantité de "quoting it" vous fera sortir de cette erreur.

  • une fois que vous obtenez ce message d'erreur, vous n'obtenez pas les sections de vous rappeler le droit d'association entre la recherche sélecteurs ("Repositories", "Users" ou "Language") et de la (bonne) recherche des filtres (ici "repo:").
    Toute autre tentative, vous ne pas afficher ces associations (sélecteurs-filtres). Seul le message d'erreur que vous voyez ci-dessus...
    La seule façon de récupérer ces tableaux est en cliquant sur le "Advance Search" icône:

Advance Search Icon on GitHub

  • le "Everything" recherche sélecteur, qui est la valeur par défaut, est en fait le mal un pour tous les filtres de recherche! À l'exception de "language:"...
    (Vous pouvez l'imaginer/supposons que "Everything" serait de vous aider à choisir ce que recherche le sélecteur fonctionne réellement avec le filtre de recherche "repo:", mais nope. Ce serait trop facile)

  • vous ne pouvez pas spécifier la recherche sélecteur vous voulez par le "Advance Search" seul domaine!
    (mais vous pouvez pour "language:", même si "Search Language" est un autre de zone de liste déroulante juste en dessous de la "Search for" 'type'...)

Wrong search selector


Ainsi, l'expérience de l'utilisateur est généralement comme suit:

  • vous cliquez sur "Advanced Search", coup d'œil sur les articles de filtres, et de l'avis de celui que vous souhaitez utiliser: "repo:"
  • vous faites une première recherche avancée "repo:jruby/jruby stat", mais avec la Recherche par défaut sélecteur "Everything"
    => FAIL! (et les tableaux d'affichage de l'association "les Sélecteurs-Filtres" est allé)
  • vous remarquez que "la Recherche pour" sélecteur "truc", sélectionnez le premier choix "Repositories" ("Dah! Je recherche dans les dépôts...")
    => FAIL!
  • découragé, vous sélectionnez le choix suivant de sélecteurs (ici, "Users"), sans même le regarder, a déclaré sélecteur, juste pour essayer encore une fois...
    => FAIL!
  • "Vis cela, GitHub de recherche est cassé! Je suis outta ici!"
    ...
    (GitHub de recherche avancée est pas cassé. Seulement leur interface graphique est...)

Donc, pour résumer, si vous voulez "grep pour quelque chose à l'intérieur d'un projet Github du code", comme l'OP Ben Humphreys, n'oubliez pas de sélectionner l'option "Code" recherche sélecteur de...

23voto

Patrick Linskey Points 631

Les récents dépôts privés ont un champ de recherche pour une recherche par le biais de cette repo.

enter image description here

Bafflingly, il ressemble à cette fonctionnalité n'est pas disponible pour les dépôts publics.

20voto

faraz Points 2787

Mise à JOUR

Le bookmarklet hack ci-dessous est cassé à cause d'un XHR les problèmes et les changements de l'API.

Heureusement, Github a maintenant Un Tout Nouveau Code de la Recherche" qui fait le travail superbement.


Caisse vaudou: Github le code de la recherche script.

Suivez les instructions, ou si vous détestez les ballonnements votre navigateur avec les scripts et les extensions, utilisez mon bookmarkified ensemble de script:

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('');

Enregistrer la source ci-dessus que l'URL d'un nouveau signet. Accédez à n'importe quel Dépôt Github, cliquez sur le signet, et bam: en page, ajaxified code de recherche.

Mise en garde Github doit indexer les pensions de titres avant que vous pouvez rechercher.

Before the Bookmarklet

Abracadabra...

After - Look in the second menubar after the leftmost tabs: Files, Commits, Branches...

Voici un exemple de recherche de l'ECMAScript 5.1 spécification référentiel:

Sample search in the annotated ECMAScript 5.1 specification repository

11voto

studgeek Points 4617

Alors que @VonC réponse qui fonctionne pour certains référentiels, malheureusement pour beaucoup de dépôts, vous ne pouvez pas droit maintenant. Github est tout simplement pas d'indexation (comme le faisait remarquer à l'origine par @emddudley). Ils n'ont pas indiqué nulle part sur leur site web, mais ils pourront vous dire si vous demandez à l'appui:

De: Tim Pease
Nous avons cessé d'ajouter nouvellement poussé code dans notre codesearch index. Le volume de code a fait le tour de notre courant de l'index de recherche, et nous travaillons sur le passage à une plus évolutive de l'architecture de la recherche. Je suis désolé pour le désagrément. Nous n'avons pas d'estimation pour ce nouvel index de recherche est en place et en cours d'exécution, mais quand il est prêt un article de blog sera publié (https://github.com/blog).

Fâcheusement il n'y a aucun moyen de savoir qui référentiels ne sont pas indexées autres que le manque de résultats (ce qui pourrait également être d'une mauvaise requête).

Il y a également aucun moyen de suivre ce problème autre que d'attendre pour eux de blog (ou regarder ici).

De: Tim Pease
Je crains que notre bug tracker est interne, mais nous pouvons vous informer dès que la nouvelle de l'index de recherche est en place et en cours d'exécution.

2voto

crizCraig Points 2041

Google permet de rechercher dans le projet, mais pas le code :(

site:https://github.com/CreateJS/EaselJS test

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X