¿Cómo pipear correctamente grep y gits para buscar una cadena determinada en archivos confirmados?

Pregunta de la clase:
Emerson Cedeño

Emerson Cedeño

Pregunta
studenthace 7 años

A las finales estoy buscando realizar algo como esto (ver comando abajo), pero no obtengo los resultados esperados, más bien, obtengo 0 resultados o en el peor de los escenarios un error, ciertamente algo estoy haciendo mal:

git log --oneline --since=2018-09-01 | grep -Eo "^(\w{8})" | git diff-tree --no-commit-id --name-only -r $1 | grep -En "la-cadena-en-cuestion"

Lo que busco es lo siguiente:

  1. extraer los commit-ids de las confirmaciones realizadas desde principio del mes;
  2. para luego buscar cuáles fueron los archivos trabajados en estas confirmaciones;
  3. y buscar dentro de estos archivos “la-cadena-en-cuestion”.

¿es posible lograr esto en una sola línea de comando pipeando greps y gits?

1 respuestas
para escribir tu comentario

    Team Platzihace 7 años

    Hola he hecho pruebas con varios comandos, algo que me pueda dar cuenta es que diff-tree solo trabaja con 2 commits, si se pone un tercer commit ya no muestra resultados, creo que ese es el problema por el cual no se puede hacer lo que necesitas. Se tendría que hacer un script en bash que recorra la salida del grep y que haga el diff-tree por cada linea en el grep.

Introducción a Terminal y Línea de Comandos 2018

Introducción a Terminal y Línea de Comandos 2018

Explora la terminal y optimiza la navegación y ejecución de programas en sistemas operativos Unix. Conociendo y dominando la terminal, podrás invocar y ejecutar programas, crear directorios de los mismos y navegar en ellos de una manera veloz y eficiente.

Introducción a Terminal y Línea de Comandos 2018
Introducción a Terminal y Línea de Comandos 2018

Introducción a Terminal y Línea de Comandos 2018

Explora la terminal y optimiza la navegación y ejecución de programas en sistemas operativos Unix. Conociendo y dominando la terminal, podrás invocar y ejecutar programas, crear directorios de los mismos y navegar en ellos de una manera veloz y eficiente.