Introdução
O artigo original aborda o problema de tags de versão não correspondentes com os commits, um erro comum em releases. Este guia prático explica as implicações e oferece soluções para evitar esse problema.

Erro de Release: Tags Não Correspondentes com Commits
Um erro comum na criação de tags de versão é criar a tag antes de subir a versão no arquivo de versão. Isso resulta em tags apontando para commits com versões anteriores, o que não é desejável. Por exemplo, a tag v1.16.0 pode apontar para um commit que ainda está em 1.15.2. Embora isso não cause problemas imediatos, pode resultar em problemas de versão e registros de pacotes que não refletem a versão real.
Checagem de Tags em 1.200 Repositórios
O artigo original checou as tags de versão em 1.200 repositórios de diferentes plataformas, incluindo PyPI, crates.io, npm, RubyGems, F-Droid apps, Helm, Flutter e os mais estrelados do GitHub. A pergunta para cada tag era: ela aponta para a versão real do commit?
Casos Reais
Alguns dos casos reais incluem:
- smallvec (Rust): a tag v1.16.0 aponta para um commit com 1.15.2 . O crates.io registra no .cargo_vcs_info.json que a 1.16.0 saiu de outro commit.
- pytest-timeout: a tag 2.5.0 saiu com 2.4.0 no setup.cfg . O commit seguinte diz "should have been committed before the tag". A 2.5.0 foi retirada (yanked) do PyPI.
- ComfyUI: três tags do ano saíram antes do bump; a release v0.14.2 , cuja tag declara 0.14.1 , traz pacotes portáteis para Windows.
Erros de Checagem
O artigo original também notou alguns erros de checagem, como monorepos com tags de outros pacotes, pré-releases escritas de dois jeitos (v2.9.0-rc0 e 2.9.0rc0), e build metadata (+45). Esses erros não aparecem nos dados antigos, que ficam congelados em tags antigas.
Soluções Práticas
Para evitar esse problema, é recomendado criar a tag depois do commit que sobe a versão, ou usar um workflow de release que crie a tag a partir do arquivo de versão. Esse é um cuidado importante, especialmente em monorepos.
Recursos e Ferramentas
A ferramenta de checagem, chamada closure_drift, é open source e pode ser encontrada em https://doi.org/10.5281/zenodo.24054343.
Conclusão
Este guia prático oferece uma visão completa do problema de tags de versão não correspondentes com commits e sugestões práticas para evitá-lo. É importante entender as implicações e tomar medidas para garantir que as tags de versão refletem corretamente os commits.