Versionamento Semântico vs Versionamento do "povo"
Será que sabemos usar bem o versionamento? Ou só "mandamos bala" no commit
Caso saiba a resposta da pergunta, poderá pular o artigo!
Pergunta: Um aplicativo foi versionado usando o Github, após lançarem a última atualização se encontra na versão 2.0.0, foi encontrado um bug na navegação de telas, ao corrigir como faremos para versionar o app novamente?
A) Lançar uma nova versão como 2.0.1 no Git
B) Lançar um commit do projeto no repositório
C) Lançar uma nova versão como 2.1.0 no Git
Contextualizando
Você desenvolvedor resolve versionar seu código no GIT, para manter um histórico de alterações e poder reverter o código caso seja necessário, até aí tudo bem, acredita que times grandes de software só seguem essa "premissa", e infelizmente não é bem assim.
Quando são lançadas muitas versões diferentes, quando é muito modular é normal acontecer aquela confusão onde pacotes ou partes do sistema como um todo acabam desconversando (por serem de diferentes versões, ou usarem diferentes pacotes).
Aqui já deve ter imaginado que precisaria apenas manter as versões mais antigas juntas e as mais novas separadas dessas e impedir confusões, certo? Como você faria isso hoje?
Versionamento Semântico (ref. Alura.com.br)
Versionamento Semântico, em inglês “Semantic Versioning”, é um padrão de regras para manter um acompanhamento de versões no desenvolvimento de códigos. Um modelo geral que todas as pessoas usuárias podem entender e utilizar.
Lembra de quando baixaram um programa e tinham versões como 1.0.1, 2.0.0 e etc?
Vamos seguindo:
MAJOR (Maior)
O primeiro dígito informa a versão de compatibilidade, caso seu software ou lib (biblioteca) sofra uma alteração que faça com que seja incompatível com a versão anterior aqui ficará bem claro, confira o exemplo.
Exemplo: Você desenvolveu um código usando uma biblioteca que tinha um nome no Java 8, e no Java 11 após uma atualização o nome mudou e algumas funcionalidades foram obsoletadas, você refatorou e utilizou a lib nova, com isso ao versionar você colocaria a seguinte tag:
Versão 1.0.0 → Agora é 2.0.0
MINOR (Menor)
O segundo dígito informa a versão da funcionalidade, onde uma nova função ou melhoria é adicionada e não afeta a compatibilidade das versões.
Exemplo: A biblioteca que você estava usando tem uma nova funcionalidade, permitindo o seu sistema crescer mais um pouco, ao versionar você colocaria a seguinte tag:
Versão 2.0.0 → Agora é 2.1.0
PATCH (Correção)
O terceiro dígito informa a versão da correção de bugs ou melhorias.
Exemplo: Ao utilizar a mesma lib, verificou que tem um problema na utilização das classes, deixando o banco de dados exposto, você corrigiu usando DTOs.
Versão 2.1.0 → Agora é 2.1.1
O versionamento sempre foi importante, mas aqui podemos ver que quando mudar o volume surgiriam problemas de controle, para quem usa GIT é bem simples lançar os commits com tags de versão, caso não tenha usado até aqui, busque aplicar e ambiente isso ao seu dia a dia, será de grande valia.
PS: Pode responder a pergunta lá de cima agora ;)
fonte: https://www.alura.com.br/artigos/versionamento-semantico-breve-introducao#:~:text=Versionamento%20Sem%C3%A2ntico%2C%20em%20ingl%C3%AAs%20%E2%80%9CSemantic,usu%C3%A1rias%20podem%20entender%20e%20utilizar.
https://semver.org/lang/pt-BR/
https://blog.tecnospeed.com.br/versionamento-semantico-app/