Buscar código dentro de un proyecto Github


272

¿Hay alguna manera de buscar algo dentro del código de un proyecto Github?

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

Ideas?


también checkout code.ohloh.net :)
obimod


Respuestas:


255

Actualización de enero de 2013: ¡ ha llegado una nueva búsqueda! , basado en elasticsearch.org :

Una búsqueda de estadísticas dentro del repositorio de ruby ​​se expresará como stat repo:ruby/ruby, y ahora solo funcionará TM .
(el nombre del repositorio no distingue entre mayúsculas y minúsculas: test repo:wordpress/wordpressdevuelve el mismo que test repo:Wordpress/Wordpress)

ingrese la descripción de la imagen aquí

Daré:

ingrese la descripción de la imagen aquí

Y tiene muchos otros ejemplos de búsqueda, basados en seguidores , o en horquillas , o ...


Actualización de julio de 2012 (viejos días de búsqueda de Lucene e indexación de código deficiente, combinada con una GUI rota, guardada aquí para el archivo):

La búsqueda (basada en SolrQuerySyntax ) ahora es más permisiva y el temido " Invalid search query. Try quoting it." desaparece cuando se usa el selector de búsqueda predeterminado "Everything" :)

(Supongo que todos podemos hacerlo más que Tim Pease , que tenía en uno de sus objetivos "piratear experiencias de búsqueda mejoradas para todas las propiedades de GitHub ", y mencioné esta pregunta de desbordamiento de pila en ese momento;))

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

Resultados de búsqueda más permisivos de GitHub


Respuesta inicial e ilustración del problema anterior (septiembre de 2012 => marzo de 2012)

Puede usar el formulario de búsqueda avanzada de GitHub :

  • Elija Code, Repositorieso Usersdel menú desplegable y
  • use los prefijos correspondientes listados para ese tipo de búsqueda .

Por ejemplo, use la repo:username/repo-namedirectiva para limitar la búsqueda a un repositorio de código .
La Advanced Searchpágina inicial " " incluye la sección:

Búsqueda de código :

La búsqueda de código buscará en todo el código alojado públicamente en GitHub. También puedes filtrar por:

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

Por lo tanto, si selecciona el " Code" selector de búsqueda, su búsqueda de un texto dentro de un repositorio funcionará:

Buen selector de búsqueda


Lo que es increíblemente inútil de GitHub es que:

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

Selector incorrecto para el archivador de código

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

  • una vez que recibe ese mensaje de error, no obtiene las secciones que le recuerdan la asociación correcta entre los selectores de búsqueda (" Repositories", " Users" o " Language") y los filtros de búsqueda (derecha) (aquí " repo:").
    Cualquier intento posterior que realice no mostrará esas asociaciones (selectores-filtros). Solo el mensaje de error que ve arriba ...
    La única forma de recuperar esos arreglos es haciendo clic en el Advance Searchícono " ":

Icono de búsqueda avanzada en GitHub

  • ¡el " Everything" selector de búsqueda, que es el predeterminado, en realidad es el incorrecto para todos los filtros de búsqueda! Excepto " language:" ...
    (Podría imaginar / suponer que " Everything" le ayudaría a elegir el selector de búsqueda que realmente funciona con el filtro de búsqueda " repo:", pero no. Eso sería demasiado fácil)

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

Selector de búsqueda incorrecta


Entonces, la experiencia del usuario generalmente es la siguiente:

  • hace clic en " Advanced Search", mira esas secciones de los filtros y observa que desea usar: " repo:"
  • realiza una primera búsqueda avanzada " repo:jruby/jruby stat", pero con el selector de búsqueda predeterminado " Everything"
    => FAIL! (y las matrices que muestran la asociación "Selectores-Filtros" se han ido )
  • te das cuenta de que "Buscar" cosa del selector, selecciona la primera opción " Repositories" ("¡Dah! Quiero buscar dentro de los repositorios ...")
    => FAIL!
  • abatido, selecciona la siguiente opción de selectores (aquí, " Users"), sin siquiera mirar dicho selector, solo para intentarlo de nuevo ...
    => FAIL!
  • "¡Al diablo con esto, la búsqueda de GitHub está rota ! ¡Me voy de aquí!"
    ...
    (La búsqueda avanzada de GitHub en realidad no está rota. Solo su GUI es ...)

Entonces, para recapitular, si quieres "buscar algo dentro del código de un proyecto Github", como el OP Ben Humphreys , no olvides seleccionar el " Code" selector de búsqueda ...


¿Estás seguro? No probé repo:"jruby/jruby" stat repo:"jruby" stat jruby: statninguno de los cuales funciona
Tom H

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

1
@DannyStaple Bueno, parecen estar al tanto del problema, si nos fijamos en la misión descrita en github.com/blog/1116-tim-pease-is-a-githubber : "Tim probablemente [...] pirateo de experiencias de búsqueda mejoradas para todas las propiedades de GitHub ". Asegúrese de responder a su tweet de GitHub ( twitter.com/#!/github/status/197070106768048128 ), como lo hice ( twitter.com/#!/VonC_/status/197565733830541313 )
VonC

9
FWIW Me puse en contacto con GitHub porque no he obtenido ningún resultado de búsqueda al restringir las búsquedas a mis repositorios. Tim Pease respondió que estaban teniendo dificultades con el volumen de los índices de repos, por lo que han estado migrando a servidores de índices fragmentados. No hay ETA sobre cuándo se migrarán todos los repositorios.
M. Dudley

3
Acabo de utilizar el consejo de esta respuesta y también está funcionando para mí, pero tengo una advertencia para agregar. El nombre del repositorio siempre debe estar en minúsculas, incluso si GitHib lo incluye en todas partes de una manera diferente. Por ejemplo, (después de configurar el menú desplegable Código, etc., como se indicó anteriormente) intente la misma búsqueda con: repo: wordpress / wordpress vs repo: WordPress / WordPress ... solo el primero arrojará resultados.
ethanpil

22

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

ingrese la descripción de la imagen aquí

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


1
Me pregunto si se trata de un movimiento comercial de baja envergadura para hacer que la gente actualice 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, por lo que no pierde funcionalidad al pagar por un repositorio privado, tuvieron que agregar otra forma de buscar solo a través de ese repositorio privado, de ahí el adicional campo de texto.
avernet

2
¡Imagine la sobrecarga de ellos teniendo un índice de búsqueda para cada línea de código en cada repositorio! ¡Insano! Es por eso que solo lo hacen para repositorios privados ...
Jonny Nott

1
La búsqueda ahora está en el encabezado, igual que la búsqueda global.
Tib

20

ACTUALIZAR

El hack de bookmarklet a continuación está roto debido a problemas de XHR y cambios de API.

Afortunadamente, Github ahora tiene "A Whole New Code Search", que hace el trabajo de manera excelente.


Echa un vistazo a este vudú: script de usuario de búsqueda de código Github .

Siga las instrucciones allí, o si odia inflar su navegador con secuencias de comandos y extensiones, use mi paquete marcado de favoritos del usuario:

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

Guarde la fuente anterior como la URL de un nuevo marcador. Busque cualquier repositorio de Github, haga clic en el marcador y bam : búsqueda de código ajaxificado en la página .

CAVEAT Github debe indexar un repositorio antes de poder buscarlo.

Antes del marcador

Abracadabra...

Después: mira en la segunda barra de menú después de las pestañas más a la izquierda: archivos, commits, ramas ...

Aquí hay una búsqueda de muestra del repositorio de especificaciones ECMAScript 5.1 anotado:

Búsqueda de muestra en el repositorio de especificaciones ECMAScript 5.1 anotado


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

Debería funcionar en la página de inicio de cualquier repositorio. ¿Quizás 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

¡Ajá! De hecho, descubrí por qué esas búsquedas pueden haber fallado: un repositorio debe esperar su turno para la indexación. Dado el gran número de repositorios activos, sospecho que lleva un poco de tiempo.
fny

2
@ user456584 eso es nuevo para mí. Es posible que también desee informar a Google y Mozilla .
fny

2
Descubrí por qué el complemento no funciona, es porque el nombre del repositorio debe estar en minúsculas. (Vea mi comentario a la respuesta de VonC arriba). Ya presenté un parche en GitHub, espero que el autor original lo vea. github.com/skratchdot/github-code-search.user.js/pull/5
ethanpil

10

Si bien la respuesta de @ VonC funciona para algunos repositorios, desafortunadamente para muchos repositorios no puede hacerlo en este momento. Github simplemente no los está indexando (como comentó originalmente @emddudley). No han indicado esto en ningún lugar de su sitio web, pero le dirán si solicita ayuda:

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

Molesto, no hay forma de saber qué repositorios no están indexados, aparte de la falta de resultados (que también podría deberse a una mala consulta).

Tampoco hay forma de rastrear este problema que no sea esperar a que lo publiquen en el blog (o verlo aquí en SO).

De: Tim Pease
Me temo que nuestro rastreador de problemas es interno, pero podemos notificarlo tan pronto como el nuevo índice de búsqueda esté en funcionamiento.


Al menos deberían mencionar que algunos resultados de búsqueda pueden omitirse. Es una mierda cuando refactorizo ​​el código y busco las ocurrencias de código que están allí pero que GitHub no menciona.
Nicodemuz


0

Busco el código fuente dentro de los repositorios de Github con la extensión gratuita de Sourcegraph Chrome ... Pero descargué Chrome primero , sabía que otros navegadores lo admiten, como, y tal vez solo, Firefox.

La he leído a través de Extensión Docs Chrome de SourceForge y luego también miré justo lo que necesitaba para la búsqueda de nombres de directorio con Github de búsqueda en sí del motor, mediante la lectura de algunos de código base Buscando Doc de Github

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.