didwhat
Tus commits de todos los repos, por día
Un comando para saber qué hiciste en todos los repos de una máquina, aunque la máquina no sea tuya.
Busca los repositorios git bajo una carpeta y lista tus commits agrupados por día, con la rama y los archivos que tocaron, más lo que todavía no salió de la máquina. Sale en Markdown para pegarlo en una bitácora o en JSON para procesarlo. Es un solo binario: solo necesita git.
v0.3.0 ·Windows, macOS y Linux · Código abierto (MIT) ·GitHub ·Notas de la versión
$ didwhat --since 2026-10-13 ~/code/client
## 2026-10-16
### platform
- 10:02 `a1a3ed8` feat: add form guidance to the tours — *fix/tour-wording* → landed as `75bd515` at 10:24
- web/src/onboarding/tours.ts
- web/tests/onboarding/catalog.test.ts
- 15:17 `d552165` feat: email managers when an incident is prioritised — *feat/priority-notifications*
- api/app/commands/incident.py
- … and 25 more
## 2026-10-13
### platform
- 13:18 `94df89d` docs: document the tour conventions — *feat/onboarding-tours* → landed as `fa5be5b` at 13:38, a squash of 7 commits
- web/CLAUDE.md
## Not pushed or not committed
### platform — `main...origin/main [ahead 1]`
- `??` docs/research/
Un reporte real, con los nombres cambiados. Lo más nuevo arriba, y dentro de cada día en el orden en que pasó.
Todos los repos de una vez
Le das una o varias carpetas y encuentra los repositorios que hay debajo. Revisa todas las ramas, los remotos y los tags, no solo la rama en la que estás.
Por el día en que lo hiciste
Cuenta la fecha en que escribiste el commit, en la hora local. Un rebase de hoy no mete trabajo de hace tres semanas en el reporte de hoy, y un commit de las 23:30 queda en su día.
Cada cambio, una sola vez
Un pull request squasheado deja una copia de tu trabajo con otra fecha. didwhat la reconoce por sus cambios, no por su mensaje, y la muestra como dónde y cuándo aterrizó tu rama.
Lo que no salió de la máquina
Al final lista los cambios sin commitear y las ramas con commits sin pushear. Es lo que conviene saber antes de devolver una laptop o cambiar de equipo.
Trabajo en varias máquinas y algunas no son mías: la laptop de un cliente, la de un empleador. Al final de la semana necesito saber qué hice en cada una para la daily, el timesheet o mi bitácora, y la respuesta está repartida en una docena de repositorios.
Empezó como un loop de git log en bash que había que pegar a mano, y que en Windows solo corría en Git Bash. Lo reescribí en Rust para que sea un binario sin runtime: en una máquina que administra otro no puedes instalar Python ni Node, pero sí puedes descargar un archivo.
No se conecta a nada salvo que le pidas --fetch, y entonces nunca pide credenciales: un fetch que las necesita se reporta como aviso en vez de colgar el escaneo.
Windows
Desde PowerShell:
powershell -ExecutionPolicy Bypass -c "irm https://github.com/neosergio/didwhat/releases/latest/download/didwhat-installer.ps1 | iex"
macOS y Linux
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/neosergio/didwhat/releases/latest/download/didwhat-installer.sh | sh
En una máquina bloqueada
Si no te dejan correr scripts de instalación, descarga el archivo de tu plataforma desde la página de la versión y pon el binario en cualquier carpeta del PATH. No necesita permisos de administrador. Con Rust instalado, también sirve cargo install --git https://github.com/neosergio/didwhat.
Los últimos siete días, en todos los repos bajo la carpeta actual:
didwhat
Ayer, para la daily:
didwhat --since yesterday --until yesterday ~/code
Un mes cerrado, guardado en un archivo para el timesheet. Una fecha sin hora cubre el día completo:
didwhat --since 2026-09-01 --until 2026-09-30 ~/code/client -o september.md
Cuando en el cliente commiteas con otra identidad:
didwhat --since "2 weeks ago" --author [email protected]
En JSON, para contarlo o filtrarlo con jq:
didwhat --json --since 2026-10-01 ~/code | jq '.repos[].commits | length'
Todas las opciones y más recetas con jq están en el README.
git en el PATH, y nada más
Windows x64, macOS (Apple Silicon e Intel), Linux x64 y ARM
Menos de 1 MB de descarga
Sin conexión, salvo con --fetch
¿Lo estás usando?
Me sirve saber dónde se equivoca: un commit que sale repetido o falta, un día mal asignado, o un caso de tu forma de trabajar que el reporte no cuenta bien.
Abrir un issue