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.

Tag antes do bump: o que achei nas tags de 2026 de 1.200 repositórios

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.

AcheiAntesBumpRepositoriosTags