Article image
Carlos Silva
Carlos Silva20/03/2023 19:30
Compartilhe

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:

    image

    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/

    Compartilhe
    Comentários (3)
    Carlos Silva
    Carlos Silva - 22/03/2023 07:46

    Galera, pra quem tem dúvidas de como seguir a semântica ao versionar no git: Tem alguns pontos onde comento que devemos colocar uma "tag" pra indicar a versão, é justamente isso, o comando git tag, que aí recomendo buscarem exemplos e melhores formas de fazer, buscar alternativas pra isso também

    VR

    Vitor Rezende - 21/03/2023 09:36

    Achei interessante, e não conhecia isso. Mas esse papo me rendeu algumas dúvidas.


    Esse versionamento vem com o nome do commit? (commit -m "2.0.1)

    Ou tem algum outro lugar que se coloca isso?? (commit -m "Correção de erro navegação 2.1.1)

    E quando mais gente trabalha dentro de um repositório, como se organiza isso? (Não sabemos a versão do commit do amigo, então é difícil saber o que foi alterado)

    José Jesus
    José Jesus - 20/03/2023 19:48

    Muito interessante .. O artigo aborda a importância do versionamento de código em projetos de software e a necessidade de seguir um padrão para garantir uma gestão eficiente das versões. O Versionamento Semântico é apresentado como uma forma de padronização que permite que todas as pessoas envolvidas no projeto possam entender e utilizar.