CLI que muestra el estado de releases en tu repositorio Git — branches y tags ordenados por semver — y qué versión está realmente desplegada en cada ambiente de Bitbucket Pipelines.
Cuando trabajas en equipo sobre un mismo repositorio, ubicar el último release y saber desde qué punto partir puede ser tedioso. TagHound resuelve eso: sincroniza el remoto, encuentra tus branches de release y te muestra las versiones ordenadas por semver — todo en un solo comando.
--dirty muestra solo orphan tags (tags sin branch asociado)taghound deploys muestra el último deploy exitoso por país/ambiente en Bitbucket Pipelines y lo ubica en tu historial de releases — branch, tag y si hay algo más nuevo sin desplegarDescarga desde la página de Releases el binario para tu plataforma:
taghound_darwin_arm64.tar.gz — macOS Apple Silicontaghound_darwin_amd64.tar.gz — macOS Inteltaghound_linux_amd64.tar.gz — Linux x86_64taghound_linux_arm64.tar.gz — Linux ARM64taghound_windows_amd64.zip — Windows x86_64taghound_windows_arm64.zip — Windows ARM64Dentro de cualquier repositorio Git:
| Flag | Tipo | Descripción |
|---|---|---|
| --dirty, -d | bool | Muestra solo orphan tags (tags sin branch asociado) |
| --profile | string | Usa un profile específico para este run sin cambiar el activo (también aplica a deploys) |
| deploys | cmd | Muestra qué hay desplegado por país/ambiente (Bitbucket Pipelines) |
| deploys --refresh, -r | bool | Ignora el caché (5 min) y vuelve a consultar Bitbucket |
| deploys --envs | bool | Lista los environments de Bitbucket definidos en el repo |
| --version, -v | — | Muestra la versión instalada |
| --help, -h | — | Muestra la ayuda |
TagHound usa profiles para soportar diferentes convenciones de nombres de branches y tags.
Cada profile define un prefijo de branch y un prefijo de tag, y genera automáticamente las regex necesarias para matchear.
El profile default matchea branches release-X.Y y tags vX.Y.Z.
Muestra todos los profiles configurados y cuál está activo.
Muestra los prefijos y las regex que TagHound genera internamente para el profile activo.
Si tienes países configurados para deploys, también muestra la sección Deploy environments (Bitbucket) con la variable del token y los ambientes prod/qa de cada país.
Usa config set para crear o actualizar un profile con prefijos personalizados.
Cambia el profile activo con config use. Los siguientes runs de taghound usarán este profile.
También puedes usar un profile específico para un solo run sin cambiar el default, con el flag --profile:
No se puede borrar default. Si borras el profile activo, se vuelve a default.
La configuración se guarda en ~/.config/taghound/config.json.
Que exista un branch de release nuevo no significa que esté en producción. taghound deploys le pregunta a Bitbucket Pipelines por el
último deploy exitoso de cada ambiente y ubica ese commit exacto en tu historial: a qué branch pertenece, con qué tag calza y si hay algo más nuevo esperando.
El código de país se guarda en mayúscula y --prod es obligatorio para un país nuevo. Para quitarlo: taghound config country delete CL.
Los resultados se cachean 5 minutos; taghound deploys --refresh se salta el caché.
| Estado | Significado |
|---|---|
| ✓ latest | El commit desplegado es el tag más nuevo de la línea de release más nueva |
| ● N commits not tagged | Desplegado desde un branch de release con commits después de su último tag |
| ⚠ … not deployed | Existe un branch de release más nuevo, o un tag más nuevo en la misma línea |
| ● not a release branch | Desplegado desde un feature u otro branch — normal en QA |
| ✗ not a release branch deployed to PROD | Lo mismo, pero en PROD (en rojo) |
| never deployed | Los pipelines llegaron al paso (manual) de deploy pero nadie lo ejecutó |
| ? commit not found locally | El commit desplegado no está en tu clon (branch borrado, force-push) |
Los países cuyos ambientes no existen en el repo se ocultan. Los tags fuera de las líneas de release de tus branches (ej. v3950.3950.1 creado desde un feature branch) se ignoran.
BITBUCKET_TOKEN es un token de repo o workspace y se envía como Bearer. BITBUCKET_USERNAME solo hace falta para app passwords o API tokens (usa Basic auth).
En ~/.config/taghound/config.json, bajo bitbucket, puedes ajustar auth_env (default BITBUCKET_TOKEN), username,
lookback (deploys revisados por ambiente, default 200) y cache_ttl_seconds (default 300).
deploys solo soporta remotos origin en Bitbucket Cloud y consulta su API por HTTPS con net/http.
Requiere Go 1.26+ y Git.
Los binarios se generan en dist/ con flags optimizados (-s -w) para tamaño mínimo.
Zero dependencias externas. TagHound usa solo la stdlib de Go. Git se invoca via os/exec — sin libgit2, sin CGO.
deploys consulta Bitbucket filtrando por UUID de environment y ordenando por fecha de término — antes la API real respondía 400. v3950.3950.1), se ocultan países sin ambientes en el repo y lookback sube de 40 a 200. El caché anterior se invalida. BITBUCKET_USERNAME, 403 indica el scope faltante, 404 indica repo no encontrado o inaccesible. taghound deploys: último deploy exitoso por país en QA/PROD de Bitbucket Pipelines, ubicado frente a tus branches y tags de release. deploys --envs para listar environments y -r, --refresh para saltarse el caché de 5 minutos. config country set/delete con plantillas {slug}, {country}, {COUNTRY} y {workspace}. BITBUCKET_TOKEN (y BITBUCKET_USERNAME opcional). config show muestra los ambientes configurados. -d para --dirty. --dirty muestra solo los tags huérfanos (antes los agregaba al final del listado normal). release-X.Y y tags vX.Y.Z, los ordena por semver y muestra commit, autor y mensaje. config list/show/set/use/delete), --dirty y --profile.