Skip to content

Versionamento Semântico (SemVer)

O Versionamento Semântico é uma prática essencial para gerenciar versões de software de maneira organizada e previsível. Seguir as regras do SemVer permite uma melhor comunicação e entendimento das mudanças, facilitando o desenvolvimento colaborativo e a manutenção de projetos a longo prazo.

O que é Versionamento Semântico?

O Versionamento Semântico, ou SemVer, é uma convenção de versionamento que utiliza um sistema de três números separados por pontos (MAJOR.MINOR.PATCH). Cada um desses números tem um significado específico e indica o tipo de mudança realizada no código.

Estrutura de Versionamento Semântico

  • MAJOR (Versão Principal):

    • Aumenta quando há mudanças incompatíveis com versões anteriores, ou seja, quando há alterações significativas que quebram a compatibilidade com versões anteriores.
    • Exemplo: Alteração de v1.0.0 para v2.0.0.
  • MINOR (Versão Secundária):

    • Aumenta quando novas funcionalidades são adicionadas de forma compatível com versões anteriores. Não deve introduzir alterações que quebrem o código existente.
    • Exemplo: Alteração de v1.1.0 para v1.2.0.
  • PATCH (Correções de Erros):

    • Aumenta quando são feitas correções de bugs de forma compatível com versões anteriores. Não deve introduzir novas funcionalidades.
    • Exemplo: Alteração de v1.0.1 para v1.0.2.

Exemplo de Uso

Suponha que você tem um software na versão v2.3.4:

  • Se você adicionar uma nova funcionalidade que não quebra a compatibilidade, a versão se torna v2.4.0.
  • Se você corrigir um bug sem alterar a interface existente, a versão se torna v2.3.5.
  • Se você fizer mudanças que quebram a compatibilidade, a versão se torna v3.0.0.

Como Aplicar SemVer no Git

  1. Marcação de Versões:

    • Sempre que uma nova versão do software for liberada, crie uma tag no Git usando o formato SemVer. Deve seguir a Convenção de Tags.
    • Exemplo:
      bash
      git tag -a v2.3.0 -m "Release of version 2.3.0 with new features"
      git push origin v2.3.0
  2. Documentação da Versão:

    • Inclua uma descrição clara das mudanças introduzidas em cada versão na mensagem da tag.
    • Exemplo:
      bash
      git tag -a v1.4.2 -m "Bug fix in user authentication"

Benefícios do Versionamento Semântico

  • Clareza: Facilita a compreensão das mudanças introduzidas em cada versão apenas observando os números de versão.
  • Compatibilidade: Permite que os desenvolvedores saibam rapidamente se uma atualização pode quebrar funcionalidades existentes.
  • Comunicação Eficiente: Estabelece uma linguagem comum entre desenvolvedores, clientes e outros stakeholders sobre o impacto das mudanças.

Boas Práticas para SemVer

  1. Mantenha o Histórico de Versões: Utilize tags no Git para marcar cada versão, garantindo que o histórico de desenvolvimento seja claro e rastreável.
  2. Documente Mudanças: Acompanhe todas as mudanças de versão em um arquivo CHANGELOG.md para que todos os envolvidos no projeto possam facilmente entender as alterações.
  3. Planeje as Mudanças: Antes de aumentar o número da versão principal, avalie se as alterações realmente justificam a quebra de compatibilidade.