Sobre el proyecto
go-whatchanged es una herramienta de línea de comandos para inspeccionar qué cambió en la API pública de un módulo Go entre dos versiones. Compara un lado base y un lado head, donde cada lado puede ser un árbol de trabajo, una copia local, una revisión de git, una rama, una etiqueta o una versión publicada de un módulo como github.com/x/m@v1.2.0. La ruta predeterminada está diseñada para ser de solo lectura: evita directorios temporales, clones de git, worktrees y escrituras en el repositorio, usando solo comandos go cuando los paquetes remotos no están ya en caché. Un flag --fsreadonly desactiva incluso la ruta de descarga a la caché de módulos para una operación totalmente sin escritura.
La herramienta informa símbolos exportados añadidos, eliminados y modificados por paquete, y resume cambios compatibles frente a incompatibles. También sugiere el incremento de versión semántica requerido, como MAJOR, MINOR o PATCH, y puede aplicar barreras de compatibilidad usando códigos de salida mediante --exit-fail=major, minor o patch. Los filtros permiten acotar la salida a cambios disruptivos, paquetes públicos, paquetes internos, paquetes main, cambios de importaciones, cambios en go.mod o cambios en tests. Se admiten patrones de inclusión y exclusión de paquetes para módulos grandes y monorepos.
Para integrarse en flujos de trabajo, go-whatchanged admite formatos de salida texto, Markdown y JSON. La salida Markdown está pensada para comentarios en pull requests y resúmenes de trabajos, mientras que la salida JSON está pensada para scripts y bots. Se proporciona una GitHub Action para publicar diferencias de API como comentarios en pull requests y resúmenes de trabajos. El README documenta limitaciones, incluidas una plataforma por ejecución, falta de soporte para go.work/vendor/GOPATH, imposibilidad de diferenciar módulos que declaran go 1.16 o anterior, y comparación solo del módulo principal en lugar de dependencias.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.