No en un repositorio Git , sino específicamente en GitHub : ¿cómo busco solo los mensajes de confirmación de un repositorio / rama específico?
No en un repositorio Git , sino específicamente en GitHub : ¿cómo busco solo los mensajes de confirmación de un repositorio / rama específico?
Respuestas:
A partir de 2017, es una funcionalidad incluida en GitHub .
La búsqueda de ejemplo utilizada por ellos es repo:torvalds/linux merge:false crypto policy
Imagen GIF de https://github.com/blog/2299-search-commit-messages
Solía poder hacer esto, pero GitHub eliminó esta función en algún momento a mediados de 2013. Para lograr esto localmente, puede hacer:
git log -g --grep=STRING
(Use la -g
bandera si desea buscar otras ramas y confirmaciones pendientes).
-g, --walk-reflogs
Instead of walking the commit ancestry chain, walk reflog entries from
the most recent one to older ones.
-g
bandera para los casos de uso más comunes. No he -g
investigado demasiado en esto, pero con , la búsqueda parece retroceder solo un mes. git log -g --grep=fix
mientras que en la develop
rama de un repositorio que tiene ~ 8000 compromisos que abarcan dos años, solo se remonta al 2 de febrero.
-g
bandera.
Actualización (2017/01/05):
GitHub ha publicado una actualización que le permite ahora buscar dentro de los mensajes de confirmación desde su interfaz de usuario. Vea la publicación del blog para más información.
Tuve la misma pregunta y contacté a alguien con GitHub ayer:
Dado que cambiaron su motor de búsqueda a Elasticsearch, no es posible buscar mensajes de confirmación utilizando la interfaz de usuario de GitHub. Pero esa característica está en la lista de deseos del equipo.
Lamentablemente, no hay fecha de lanzamiento para esa función en este momento.
La respuesta corta es que no puede buscar mensajes de confirmación directamente en github.com, el sitio web. Por el momento, recomendamos la git grep
solución local que otros en este hilo han propuesto.
En un momento dado, GitHub ofreció una git grep
búsqueda de estilo sobre los mensajes de confirmación para un único repositorio. Desafortunadamente, este enfoque expuso una denegación de servicio que podría hacer que un servidor de archivos fuera inaccesible. Por esta razón, eliminamos la git grep
búsqueda.
Las estimaciones actuales de la parte posterior del sobre ponen el número de confirmaciones en GitHub en algún lugar alrededor de la marca de 80 mil millones. Aunque los ingenieros de Google se ríen a nuestras espaldas, este es un número bastante grande de documentos para almacenar en ElasticSearch. Nos encantaría poder hacer búsquedas en este conjunto de datos, pero no es un proyecto trivial.
git diff's
(es decir, el contenido de las confirmaciones, no los metadatos de confirmación)
Esto fue eliminado de GitHub. Yo suelo:
$git log --all --oneline | grep "search query"
También puede filtrar por autor:
$git log --all --oneline --author=rickhanlonii | grep "search query"
Desde la página de ayuda sobre la búsqueda de código , parece que esto aún no es posible.
Puede buscar texto en su repositorio, incluida la capacidad de elegir archivos o rutas para buscar, pero no puede especificar que desea buscar en confirmaciones.
¿Quizás les sugiera esto ?
Puede hacerlo con los repositorios que Google ha rastreado (los resultados varían de un repositorio a otro).
Sitio de "cambio de licencia": https://github.com/*/*/commits
Sitio de "cambio de licencia": https://github.com/*/*/commits/master
Sitio de "cambio de licencia": https://github.com/twitter/*/commits/master
Sitio de "cambio de licencia": https://github.com/twitter/some_project/commits
Actualización de enero de 2017 (dos años después):
¡Ahora puede buscar mensajes de confirmación ! (todavía solo en la rama maestra)
Febrero de 2015: no estoy seguro de que eso sea posible, teniendo en cuenta la base actual de infraestructura de búsqueda en Elasticsearch (presentada en enero de 2013 ).
Como respuesta "a partir de fuentes confiables y / o oficiales", aquí hay una entrevista realizada con las personas de GitHub a cargo de presentar Elasticsearch en GitHub (agosto de 2013)
Tim Pease : Tenemos dos tipos de documentos: uno es un archivo de código fuente y el otro es un repositorio. La forma en que funciona git es que tiene commits y tiene una rama para cada commit. Los documentos del repositorio realizan un seguimiento de la confirmación más reciente para ese repositorio particular que ha sido indexado. Cuando un usuario envía una nueva confirmación a Github, extraemos ese documento del repositorio de elasticsearch. Luego vemos la confirmación indexada más recientemente y luego obtenemos una lista de todos los archivos que se han modificado, agregado o eliminado entre este envío reciente y lo que hemos indexado previamente. Entonces podemos seguir adelante y simplemente actualizar los documentos que han sido modificados. No tenemos que volver a indexar todo el árbol de código fuente cada vez que alguien empuja.
Andrew Cholakian: Entonces, ustedes solo indexan, supongo, la rama maestra.
Tim Pease: Correcto. Es solo el jefe de la rama maestra lo que va a ingresar allí y aún así son muchos datos, dos mil millones de documentos, 30 terabytes.
Andrew Cholakian: Eso es asombrosamente enorme.
[...]
Tim Pease: con el código fuente de indexación al pulsar, es un proceso de autocuración.
Tenemos ese documento de repositorio que realiza un seguimiento de la última confirmación indexada. Si fallamos, simplemente perdemos tres confirmaciones donde fallan esos trabajos, la próxima confirmación que viene, todavía estamos viendo la diferencia entre la confirmación anterior que indexamos y la que estamos viendo con este nuevo impulso.
Hacesgit diff
y obtienes todos los archivos que se han actualizado, eliminado o agregado. Simplemente puede decir: "Bien, necesitamos eliminar estos archivos. Necesitamos agregar estos archivos y todo eso ". Es autocuración y ese es el enfoque que hemos adoptado con casi toda la arquitectura.
Todo eso significa que no todas las ramas de todo el repositorio se indexarían con ese enfoque.
Una búsqueda de mensaje de confirmación global no está disponible por ahora.
Y el propio Tim Pease confirma que los mensajes de confirmación no están indexados .
Tenga en cuenta que no es imposible obtener la propia indexación local de ElasticSearch de un clon local: consulte " Búsqueda en un repositorio git con ElasticSearch "
Pero para un repositorio específico, lo más fácil es clonarlo y hacer un:
git log --all --grep='my search'
(Más opciones en " ¿Cómo buscar un repositorio Git por mensaje de confirmación? ")
Como esto se ha eliminado de GitHub, he estado usando gitk
Linux para hacer esto.
Desde la terminal, vaya a su repositorio y escriba gitk
.
En el medio de la GUI, hay un cuadro de búsqueda. Proporciona una buena selección de filtros:
Alcance: contiene, toca caminos, agrega / elimina cadenas, cambia la coincidencia de líneas
Tipo de coincidencia: exacto / IgnCase / Regexp
Campos de búsqueda - Todos los campos / Encabezado / Comentarios / Comprador
Esto funciona bien desde Eclipse , hasta que GitHub agrega la característica:
Si tiene una versión local del repositorio, puede probar este script de shell crudo que escribí para abrir las páginas de GitHub para todas las confirmaciones que coinciden con su término de búsqueda en nuevas pestañas en su navegador predeterminado:
#!/bin/sh
for sha1 in $(git rev-list HEAD -i --grep="$1"); do
python -mwebbrowser https://github.com/RepoOwnerUserName/RepoName/commit/$sha1 >/dev/null 2>/dev/null
done
Simplemente reemplácelo https://github.com/RepoOwnerUserName/RepoName/
con la URL de GitHub real de su repositorio, guarde el script en algún lugar (por ejemplo githubsearch.sh
, como , hágalo ejecutable ( chmod +x githubsearch.sh
) y luego agregue el siguiente alias a su ~/.bashrc
archivo:
alias githubsearch='/path/to/githubsearch.sh'
Luego, desde cualquier lugar en su repositorio Git, simplemente haga esto en la terminal:
githubsearch "what you want to search for"
y cualquier confirmación que coincida con su término de búsqueda (sin distinción entre mayúsculas y minúsculas) tendrá sus correspondientes páginas de GitHub abiertas en su navegador. (Tenga en cuenta que si su término de búsqueda aparece en cientos de confirmaciones, esto podría bloquear su navegador y consumir la CPU de su PC por un tiempo).