2010-09-01 15 views
207

¿Hay alguna forma de grep para algo dentro del código de un proyecto Github?Código de búsqueda dentro de un proyecto Github

Podría extraer la fuente y grep it localmente, pero me preguntaba si es posible a través de la interfaz web o una alternativa de terceros.

Ideas?

+0

también comprobación http://code.ohloh.net :) – obimod

+0

Para las cesiones temporales de Java/Scala, trate [Codota Semántica Code Search] (https://www.codota.com/index-your-repo) – drorw

Respuesta

225

actualización de enero de 2013: un brand new search has arrived!, basado en elasticsearch.org:

Una búsqueda de estadística dentro de la cesión temporal de rubí se expresará como stat repo:ruby/ruby, y ahora acaba de trabajar TM.
(el nombre de recompra no distingue entre mayúsculas y minúsculas: test repo:wordpress/wordpress devuelve el mismo que test repo:Wordpress/Wordpress)

enter image description here

dará:

enter image description here

Y tiene muchos otros ejemplos de búsqueda, basado on followers , o on forks, o ...


Update Julio 2012 (viejos tiempos de búsqueda Lucene y la mala indexación de código, combinado con interfaz gráfica de usuario rota, mantuvo aquí por archivo):

La búsqueda (basado en SolrQuerySyntax) es ahora más permisiva y la temida "Invalid search query. Try quoting it." se ha ido cuando se utiliza el valor predeterminado búsqueda selector de "todo" :)

(supongo que todos podemos Tim Pease, que tenía en uno de sus objetivos "hacking on improved search experiences for all GitHub properties", y I did mention this Stack Overflow question en el momento;))

Aquí hay una ilustración de un grep dentro del código ruby: buscará repos y usuarios, pero también para lo que quería buscar en primer lugar: ¡el código!

GitHub more permissive search results


respuesta inicial y la ilustración de la primera edición (septiembre de 2012 => Marzo 2012)

Puede utilizar el advanced search GitHub form:

  • Elija Code, o RepositoriesUsers del menú desplegable y
  • utilice los prefijos correspondientes listados para ese tipo de búsqueda.

Por ejemplo, utilice la directiva repo:username/repo-name para limitar la búsqueda a un código repositorio.
El "Advanced Search" página inicial incluye la sección:

Código Buscar:

la búsqueda de código se verá a través de todo el código alojado en GitHub públicamente. También puede filtrar por:

  • el idioma language:
  • el nombre del repositorio (incluyendo el nombre de usuario) repo:
  • la ruta del archivo path:

Así que si selecciona el "Code Selector de búsqueda ", entonces su consulta grepping para un texto dentro de un acuerdo de recompra funcionará:

Good Search selector


Lo que es increíblementeinútil de GitHub es que:

  • si se le olvida poner el selector de búsqueda correcto (aquí "Code"), obtendrá un mensaje de error:
    "Invalid search query. Try quoting it.

Wrong selector for the code filer

  • mensaje de error "no le ayuda en absoluto.
    Ninguna cantidad de "quoting it" le sacará de este error.

  • una vez que llegue ese mensaje de error, no obtiene las secciones que le recuerda de la asociación correcta entre la búsqueda selectores ("Repositories", 'Users' o "Language") y la búsqueda (a la derecha) filtros (aquí "repo:").
    Cualquier intento adicional que realice no volverá a mostrar esas asociaciones (selectores-filtros). Solo el mensaje de error que ves arriba ...
    La única manera de recuperar esos conjuntos es haciendo clic en el icono "Advance Search":

Advance Search Icon on GitHub

  • el selector de búsqueda "Everything", que es el valor por defecto, es en realidad el incorrecto uno para todos de los filtros de búsqueda! Excepto "language:" ...
    (Se podría imaginar/asume que "Everything" le ayudará a escoger lo selector de búsqueda en realidad trabaja con el filtro de búsqueda "repo:", pero pues no. Eso sería demasiado fácil)

  • no puede especificar el selector de búsqueda que desea a través del campo "Advance Search" solo!
    (pero que puede para "language:", a pesar de que "Search Language" es otro cuadro combinado justo debajo de la "Search for" 'tipo' uno ...)

Wrong search selector


Así , la experiencia del usuario por lo general es la siguiente:

  • haga clic en "Advanced Search", eche un vistazo a esos sec ciones de filtros, y notará que desea utilizar: "repo:"
  • que hacer una primera búsqueda avanzada "repo:jruby/jruby stat", pero con el valor por defecto selector de búsqueda "Everything"
    =>FAIL! (Y las matrices que muestran la asociación "Selectores-Filtros" es ido)
  • se observa que "La búsqueda por" cosita selector, seleccione la opción primera "Repositories" ("Dah! Quiero buscar dentro de los repositorios. .. ")
    =>FAIL!
  • abatido, se selecciona la siguiente opción de selectores (en este caso, "Users"), sin mirar siquiera a dicho selector, sólo para dar una oportunidad más ...
    =>FAIL!
  • "¡Atornille esto, la búsqueda de GitHub es roto! ¡Estoy fuera de aquí!"
    ...
    (GitHub búsqueda avanzada en realidad no está roto. Sólo su GUI es ...)

Por lo tanto, para resumir, si quieres "grep por algo dentro de una Código del proyecto Github ", como OP Ben Humphreys, no se olvide de seleccionar el selector de búsqueda" Code "...

+0

estás seguro, probé 'repo:" jruby/jruby "stat'' repo: "jruby" stat' 'jruby: stat' ninguno de los cuales funciona –

+0

@TomH: a primera vista, podría ser un error en el lado de GitHub, como se comentó en http://superuser.com/a/179900/141 – VonC

+0

@TomH: después de una edición útil de "Comunidad", he agregado ilustraciones a mi respuesta para mostrar cómo la búsqueda avanzada 'repo: jruby/jruby stat' (no hay necesidad de comillas dobles aquí) puede funcionar. Entonces, no es un error, después de todo. – VonC

22

Los repositorios privados recientes tienen un campo de búsqueda para buscar a través de ese repositorio.

enter image description here

Incomprensiblemente, parece que esta funcionalidad no está disponible para los repositorios públicos, sin embargo.

+1

Me pregunto si este es un movimiento comercial modesto para hacer que las personas actualicen a la versión de pago? No suena como github, pero aún así. – Sylvain

+3

@Sylvain No creo que se haga como un estímulo para actualizar, ya que incluso después de la actualización, no obtendrá ese campo de búsqueda de repositorios públicos. En cambio, creo que la búsqueda principal utiliza un índice que no incluye repositorios privados, y para que no pierda funcionalidad al pagar por un repositorio privado, tuvieron que agregar otra forma de buscar a través de ese repositorio privado solamente, por lo tanto, el adicional campo de texto. – avernet

+2

¡Imagine la sobrecarga de tener un índice de búsqueda para cada línea de código en cada repositorio! ¡Insano! Es por eso que solo lo hacen para repos privado ... –

20

ACTUALIZACIÓN

El bookmarklet hackear a continuación se rompe debido a problemas de XHR y cambios en la API.

Afortunadamente Github ahora tiene "A Whole New Code Search" que hace el trabajo magníficamente.


Pedido esta vudú: Github code search userscript.

Siga las instrucciones allí, o si no le gusta hinchar su navegador con scripts y extensiones, utiliza mi paquete bookmarkified del 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(''); 

Guardar la fuente anterior como la dirección URL de un nuevo marcador. Busque Github repo, haga clic en el marcador y bam: in-page, código ajaxificado búsqueda.

CAVEAT Github debe indexar un repositorio antes de poder buscarlo.

Before the Bookmarklet

Abracadabra ...

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

Aquí está un ejemplo de búsqueda de la especificación ECMAScript 5.1 anotada repositorio:

Sample search in the annotated ECMAScript 5.1 specification repository

+0

Cuando uso el complemento (Chrome) funciona bien en el repositorio scratchdot/github-code-search, pero no en ningún otro repositorio. – forforf

+0

Debería funcionar en la página de inicio de cualquier repositorio. Tal vez lo estás intentando desde una página diferente? Publiqué una captura de pantalla de una búsqueda de muestra en un repositorio diferente en mi publicación. – fny

+0

Sí, parece estar funcionando ahora, es muy útil, ¡gracias! – forforf

10

Mientras @ respuesta de VonC funciona para algunos repositorios, por desgracia para muchos repositorios que no puede en este momento. Github simplemente no los está indexando (como comentó originalmente @emddudley). No han afirmado esto en cualquier lugar en su sitio web, sino que le dirá si le preguntas de soporte:

De: Tim Pease
Hemos dejado de añadir código recién empujado en nuestro índice CodeSearch. El volumen de código ha superado el índice de búsqueda actual, y estamos trabajando para pasar a una arquitectura de búsqueda más escalable. Lo siento por la molestia. No tenemos una estimación de cuándo estará funcionando este nuevo índice de búsqueda, pero cuando esté listo se publicará una publicación de blog (https://github.com/blog).

Es molesto que no haya forma de saber qué repositorios no están indexados sino la falta de resultados (que también podría ser de una consulta incorrecta).

También no hay forma de rastrear este problema más que esperar a que lo blogicen (o mirar aquí en SO).

De: Tim Pease
me temo nuestro gestor de incidencias es interno, pero se puede notificar tan pronto como el nuevo índice de búsqueda está en marcha.

+2

Comentarios muy interesantes. +1 – VonC

+1

taaaan frustrante :( –

+0

Al menos deberían mencionar que algunos resultados de búsqueda pueden omitirse. Es totalmente desagradable cuando refactorizo ​​el código y busco las ocurrencias de código que están ahí pero no mencionadas por GitHub. – Nicodemuz

Cuestiones relacionadas