search - tag - git versioning
¿Cómo buscar un mensaje de confirmación en GitHub? (11)
No en un repositorio de Git , sino específicamente en GitHub , ¿cómo busco solo los mensajes de confirmación de un repositorio / sucursal específico?
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
Desde la página de ayuda en el código de búsqueda , parece que esto todavía no es posible.
Puede buscar texto en su repositorio, incluida la posibilidad de elegir archivos o rutas para buscar, pero no puede especificar que desea buscar en confirmaciones.
Tal vez sugiera esto a ellos ?
Desde que se eliminó de Github, he estado usando gitk
en Linux para hacer esto.
Desde la terminal ve a tu repositorio y escribe gitk
En el medio de la interfaz gráfica de usuario, hay un cuadro de búsqueda. Proporciona una buena selección de filtros:
Ámbito: contiene, toca rutas, agrega / elimina cadenas, cambia la coincidencia de líneas
Tipo de concordancia - Exact / IgnCase / Regexp
Campos de búsqueda - Todos los campos / Encabezado / Comentarios / Confirmación
Esto fue eliminado de GitHub. Yo suelo:
$git log --all --oneline | grep "search query"
También puedes filtrar por autor:
$git log --all --oneline --author=rickhanlonii | grep "search query"
Esto funciona bien desde dentro de eclipse, hasta que github agrega la característica:
https://wiki.eclipse.org/EGit/User_Guide#Searching_for_commits
La respuesta corta es que no puede buscar mensajes de confirmación directamente en github.com, el sitio web. Por el momento, recomendamos la solución local de git grep
que otros en este hilo han propuesto.
En un momento dado, GitHub ofreció una búsqueda de estilo git grep
sobre mensajes de confirmación para un solo repositorio. Desafortunadamente, este enfoque expuso una denegación de servicio que podría hacer que un servidor de archivos sea inaccesible. Por esta razón, hemos eliminado la búsqueda git grep
.
Las estimaciones actuales de la parte posterior del sobre colocan el número de confirmaciones en GitHub en algún lugar alrededor de los 80 mil millones. Aunque los ingenieros de Google se ríen detrás de nosotros, este es un número bastante grande de documentos para almacenar en ElasticSearch. Nos encantaría que este conjunto de datos pueda buscarse, pero no es un proyecto trivial.
Puede hacer esto con los repositorios que ha rastreado Google (los resultados varían de un repositorio a otro)
Buscar en todas las sucursales de todos los repos rastreados para "cambiar licencia"
Sitio "cambiar licencia": https://github.com/*/*/commits
Buscar rama principal de todos los repos rastreados para "cambiar licencia"
Sitio "cambiar licencia": https://github.com/*/*/commits/master
Busque la rama principal de todos los repositorios de twitter rastreados para "cambiar licencia"
Sitio "cambiar licencia": https://github.com/twitter/*/commits/master
Busca en todas las sucursales de twitter / some_project repo para "cambiar licencia"
Sitio de "cambio de licencia": https://github.com/twitter/some_project/commits
Si está trabajando en Ubuntu (o tal vez en otros sistemas operativos Unix) y tiene una versión local del repositorio, tal vez quiera probar este script de shell en bruto que escribí para abrir las páginas de GitHub para todas las confirmaciones que coincidan con su término de búsqueda en nuevas pestañas en su navegador por defecto:
#!/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 reemplace https://github.com/RepoOwnerUserName/RepoName/
con la URL real de Github de su repositorio, guarde el script en algún lugar (por ejemplo, githubsearch.sh
, githubsearch.sh
ejecutable ( chmod +x githubsearch.sh
) y luego agregue lo siguiente alias a su archivo ~/.bashrc
:
alias githubsearch=''/path/to/githubsearch.sh''
Luego, desde cualquier lugar de tu repositorio de git, haz esto en la terminal:
githubsearch "what you want to search for"
y cualquier confirmación que coincida con su término de búsqueda (que no distinga mayúsculas y minúsculas) tendrá sus páginas GitHub correspondientes abiertas en su navegador. (Tenga en cuenta que si su término de búsqueda aparece en cientos de confirmaciones, esto puede bloquear su navegador y consumir la CPU de su PC por un tiempo).
Solo probé esto en Ubuntu y no sé lo suficiente sobre los scripts de shell para saber si funcionará en otros sistemas operativos basados en Unix, particularmente no sé si algo que he usado aquí es específico de Bash. Siéntase libre de comentar o editar para agregar información de compatibilidad.
Solía poder hacer esto, pero Github eliminó esta función en algún momento a mediados de 2013. Para lograr esto a nivel local, puedes hacer:
git log -g --grep=STRING
(Use la marca -g si desea buscar otras ramas y compromisos colgantes).
-g, --walk-reflogs
Instead of walking the commit ancestry chain, walk reflog entries from
the most recent one to older ones.
Actualización de enero de 2017 (dos años después):
¡Ahora puedes 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 de infraestructura de búsqueda actual 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 encargadas 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 confirmaciones y tiene una rama para cada confirmación. Los documentos del repositorio hacen un seguimiento de la confirmación más reciente para ese repositorio en particular que se ha indexado. Cuando un usuario envía un nuevo compromiso a Github, luego extraemos ese documento del repositorio de elasticsearch. Luego vemos la confirmación indexada más reciente y luego obtenemos una lista de todos los archivos que se modificaron, agregaron o eliminaron entre esta inserción reciente y lo que hemos indexado previamente. Luego podemos continuar 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 que vas a entrar allí y aún así son muchos datos, dos mil millones de documentos, 30 terabytes.
Andrew Cholakian: Eso es increíblemente enorme.
[...]
Tim Pease: Con el código fuente de indexación en push, es un proceso de autocuración.
Tenemos ese documento de repositorio que realiza un seguimiento de la última confirmación indexada. Si fallamos, simplemente faltan 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 indizamos y la que estamos viendo con este nuevo impulso.
Usted hace ungit diff
y obtiene todos los archivos que se han actualizado, eliminado o agregado. Solo puede decir: “Bueno, necesitamos eliminar estos archivos. Necesitamos agregar estos archivos y todo eso ”. Es auto-reparable y ese es el enfoque que hemos adoptado con casi toda la arquitectura.
Eso significa que no todas las ramas de todo el repositorio se indexarían con ese enfoque.
Una búsqueda global de mensajes de confirmación 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 de 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? ")
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. Ver la publicación del blog para más información.
Tuve la misma pregunta y contacté a alguien @Github ayer:
Desde 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.