git-who es una herramienta CLI para encontrar a las personas responsables de componentes completos o subsistemas de una base de código
- A diferencia de
git blame, git-who funciona a nivel de árbol de archivos para identificar a quienes escribieron el código
- Ofrece tres subcomandos, y cada uno brinda una perspectiva distinta sobre la autoría en un repositorio Git
-
table
- Es el valor predeterminado y muestra una tabla que resume las contribuciones de todas las personas autoras que hicieron commits en el repositorio
- Se puede especificar una ruta para filtrar solo los commits de archivos dentro de esa ruta
- Se puede especificar un nombre de rama, nombre de tag o un “commit-ish” para filtrar solo los commits alcanzables desde un commit específico
- Se pueden usar los flags
-m, -c, -l, -f para ordenar la tabla según distintas métricas
-
tree
- Muestra el árbol de archivos, y cada nodo indica la persona autora que más contribuyó en esa ruta
- Se puede usar el flag
-a para anotar todos los archivos
- Soporta los flags
-l, -f, -m, -c
-
hist
- Muestra un histograma/línea de tiempo de la actividad de commits para enseñar el historial de contribuciones al repositorio
- Soporta los flags
-l y -f.
- Opciones adicionales para filtrar commits
- Se pueden usar las opciones
--author y --nauthor para indicar qué personas autoras incluir o excluir
- Se pueden usar las opciones
--since y --until para filtrar commits anteriores o posteriores a una fecha específica
- Caché: guarda datos por repositorio en
XDG_CACHE_HOME. Para desactivar la caché, configura GIT_WHO_DISABLE_CACHE=1
- Si instalas el binario
git-who en tu PATH, puedes ejecutar git who sin configuración adicional. Si lo instalas con otro nombre o quieres configurarlo explícitamente, puedes agregar un alias en la configuración de Git
- Si existe un archivo
.mailmap en el repositorio Git, git who lo respeta para contabilizar juntos los commits de una misma persona
-
Métricas
- Cantidad de commits: indica cuántos commits modificaron la ruta
- Cantidad de archivos: indica cuántos archivos únicos modificó la persona autora
- Líneas agregadas y líneas eliminadas: indican cuántas líneas se agregaron o eliminaron en la ruta
-
Diferencias con git blame
- Mientras que
git blame identifica el commit que introdujo cada línea basándose en el código del árbol de trabajo,
git who recorre parte del historial de commits para agregar las contribuciones
- Ambas herramientas operan en niveles distintos y ofrecen información diferente
1 comentarios
Opiniones de Hacker News
En relación con el análisis de "quién escribió vim", según el flujo de trabajo puede parecer que los contribuidores internos aportaron más
Esta herramienta está realmente genial. La probé un rato antes de terminar el día
gnu tarmuestra una advertencia por incompatibilidad en el formato del archivoMucha gente malinterpreta git blame. No se trata de quién lo hizo, sino de qué commit fue la causa
Se puede invocar
git-whocomogit who. Solo hay que configurar un alias en la configuración global de Gitgit whateverbuscagit-whateveren el path y lo ejecutaEn la versión de bajos recursos uso el alias "nerdwars" para ejecutar "git shortlog -ns --no-merges". Es una buena forma de identificar a los principales contribuidores de un proyecto
Gitlab/Github deberían agregar una función que envíe automáticamente un correo al último autor de las líneas de código modificadas cuando se envía una solicitud de fusión
Esta herramienta es excelente. Uso contabilidad basada en git-blame para rastrear cuánto código fue escrito por IA y cuánto por humanos en cada release de la app
tiges un gran frontend TUI para git y tiene un hermoso subcomandotig blameLo que falta en git no es la cantidad de líneas o commits escritos por un desarrollador. Más bien es lo siguiente
Algunas personas hacen commits usando dos correos distintos. Por ejemplo, usan un correo en la computadora de casa y otro en la del trabajo. Estaría bien poder definir que ambos son la misma persona