ben dilts
Tengo una rama de funciones que ha crecido bastante. Hay bastantes comentarios TODO persistentes en nuestro código, pero me gustaría encontrar todos los TODO agregados al código (y no eliminados aún) en confirmaciones que aún no se fusionaron en maestro. ¿Cómo podría hacerlo?
Simplemente puede comparar su rama con master y grep para TODO en la salida
git diff master..branch | grep "^+.*TODO"
Esto funciona muy bien para mí, suponiendo suficiente contexto en la línea TODO.
-
Esto no proporciona ubicaciones de archivos.
-Mohit Jain
19 de enero de 2018 a las 5:51
bimlas
Puedes usar esto como un alias de Git:
git --no-pager diff -U0 master | \
grep '^+.*TODO' | \
sed 's/^+//' | \
git --no-pager grep -nFf - 2> /dev/null
Muestra las líneas TODO añadidas/modificadas de la rama actual (en comparación con master
), pero tienes que git add
antes de usarlo (debido a git grep
).
Puede ser aún más útil si lo agrega a la status
alias, por lo que estaría seguro de que no quedan TODO cuando vea el estado.
[alias]
s = "!sh -c ' \
[ $GIT_PREFIX ] && cd $GIT_PREFIX; \
git status --short --branch $*; \
git --no-pager diff -U0 master | \
grep \"^+.*TODO\" | \
sed \"s/^+//\" | \
git --no-pager grep -nFf - 2> /dev/null' -"
Salida de ejemplo:
$ git s
## my-branch...origin/my-branch [ahead 2]
M README.adoc
README.adoc:12: // TODO: Add screencast
README.adoc:26: // TODO: Advertise Asciidoctor
-
Para que este alias funcione en git worktrees, agregue
export GIT_WORK_TREE=$(pwd); \
como la primera línea, antes de la[ $GIT_PREFIX ] && cd $GIT_PREFIX
– Ene
26 de julio de 2018 a las 8:55
tejer
git grep
puede realizar una búsqueda de texto en un árbol dado. git branch --no-merged $commit
le da todas las ramas no fusionadas en la confirmación nombrada. Combina los dos y listo (lo sé, no deberías usar git branch
en scripts, pero no pude encontrar rápidamente una manera de decir git for-each-ref
para considerar solo referencias no fusionadas. Si alguien tiene una solución, siéntase libre de comentar/editar)
git branch --no-merged master | cut -c3- | while read branch; do
git grep 'TODO' "$branch"
done
zyf0330
Combine las dos respuestas anteriores, escribo este código para mostrar TODO en la confirmación HEAD.
git --no-pager diff -U0 HEAD^..HEAD | grep -o 'TODO.*$' | xargs -I{} git --no-pager grep -wn -P '{}$' 2>/dev/null
Una situación similar: stackoverflow.com/q/52617314/470749
– Ryan
07/12/2018 a las 18:32