Versionamento Semantico Sem Complicacao

Versionamento semântico

O objetivo deste tópico é descrever de forma fácil como devemos utilizar alguns dos principais comandos para manter o versionamento no desenvolvimento de códigos utilizando o semantic-release.

O que é versionamento semântico?

O versionamento semântico é um padrão de regras para manter um acompanhamento de versões no desenvolvimento de códigos, no contexto geral e uma tentativa de resolução de um problema antigo conhecido como “Inferno de dependências” ou dependency hell, onde cada versão possui um número diferente que carrega melhorias e demais mudanças que podem diferir bastante uma das outras.

Versionamento

O versionamento semântico segue o formato MAJOR.MINOR.PATCH (X.Y.Z), aonde cada parte do número da versão tem um significado específico:

  • Major: Representa a versão de compatibilidade, ou seja, caso for alterado o software ou biblioteca sofre uma mudança que o torna incompatível com outras versões anteriores.

  • Minor: Representa a versão da funcionalidade, onde uma nova função ou melhoria substancial é adicionada e não há problemas de incompatibilidade com outras versões.

  • Patch: Representa a correção de bugs, melhorias de desempenho ou alterações similares que não alteram as funcionalidades atuais e nem introduzem novas.


Exemplos de Versionamento Semântico

  • 1.0.0: Primeira versão estável.
  • 1.1.0: Nova funcionalidade adicionada de forma retrocompatível.
  • 1.1.1: Correção de bug na versão 1.1.0.
  • 2.0.0: Alteração que quebra a compatibilidade com a versão 1.x.x.

Benefícios do Versionamento Semântico

  • Clareza: Facilita para os desenvolvedores entenderem o impacto das mudanças.
  • Gestão de Dependências: Ajuda a gerenciar bibliotecas e dependências, permitindo atualizações seguras.
  • Comunicação: Proporciona uma linguagem comum para comunicar mudanças no software.

Exemplo de commits

Incremento do minor

Na imagem acima, o feat no início da mensagem indica que a próxima versão deverá ter o minor incrementado em +1. Por exemplo, se a versão atual estiver em 4.3.8, a próxima será 4.4.0.


Incremento do patch

Na imagem acima, o fix: no início da mensagem indica que a próxima versão deverá ter o patch incrementado em +1. Por exemplo, se a versão atual estiver em 4.3.8, a próxima será 4.3.9


Configuração

Abaixo é possível visualizar uma configuração de um projeto e quais comandos permitem incrementar a versão e qual parte da versão é modificada.

ComandoIncrementoBREAKING CHANGEmajorfeatminorperfpatchfixpatchrefactorpatchbuildpatch
Mesmo seguindo uma convenção, essas regras são passíveis de mudança. Alinhe com o arquiteto da sua squad sobre como seu projeto está configurado.

Gerenciamento de Tags e Releases

Cada nova versão registrará uma tag no repositório. Essa tag serve como ponto de referência da criação da versão no histórico do git. Sendo possível acessar o estado dos fontes de determinada versão.

Tags

Releases


Melhores Práticas

No dia a dia normalmente conseguimos manter um padrão de mensagens as mais comuns sempre serão as seguir:

  • feat para registrar mudanças que não adicione novas funcionalidades ao projeto sem quebrar versões anteriores.
  • fix se encaixa em contexto de pequenas correções que acontecem ao longo do desenvolvimento do projeto.

Por convenção, a mensagem deve ser escrita com o tipo seguido de dois pontos e espaço, acompanhado da descrição e sem ponto final

<type>[optional scope]: <description>

[optional body]

[optional footer(s)]

Conclusão

Em resumo, o uso de versionamento semântico é uma prática recomendada em projetos de software, pois garante que todos os envolvidos no desenvolvimento e uso do software compreendam a natureza das mudanças realizadas.


Dicas

Vejam outros conteúdos sobre como melhorar a sua produtividade:

comandos-git-sem-complicacao
extensão-visual-studio-code-sankhya
desenvolvimento-web-com-livereload
configuracoes-de-encode-no-eclipse
comandos-docker-sem-complicação
padroes-de-nomenclatura-de-branch
fluxo-de-trabalho-de-uma-branch-bugfix