Todos os exemplos de versões semânticas que eu vi mostram três componentes em uso. Não mais que 2 caracteres de ponto. Na $DAYJOB
, usamos 4 componentes em nossos números de versão:
5.0.1.2
O versionamento semântico permite isso?
E como uma questão secundária de nível superior e mais discutível, isso realmente importa? Comecei a pensar que seria uma boa ideia aplicar o controle de versão semântico, mas, no final, entidades como o PCI o substituem.
Eu deveria ter esclarecido meu comentário sobre o PCI. O problema é que as auditorias e seus custos influenciam quando os componentes principais e secundários mudam, não necessariamente um novo recurso verdadeiro. Por exemplo, se um recurso relacionado a pagamentos for introduzido, aumentamos o número menor para PCI. Mas se adicionarmos um novo recurso relacionado a algo na GUI, isso não acontece. Somente o patch muda. Portanto, neste caso, não temos uma opinião sobre o assunto como desenvolvedores, já que alguém toma essas decisões.
fonte
MAJOR(PCI).MINOR(PCI).FEATURE.HOTFIX+BUILD
. Basicamente, temos permissão para alterar o 3º e o 4º componente sem envolver o PCI (e posteriormente os senhores do PCI na empresa). Para mim, parece que isso é um pouco artificial, não tenho certeza se eles são justificados na maneira como gerenciam o número da versão, mas não sei o suficiente sobre o PCI e o processo de auditoria para dizer o contrário.Respostas:
Parece que você está ignorando as convenções normais apenas para evitar despesas gerais / auditorias do processo. Isso ... me parece preocupante.
O que você está fazendo é efetivamente criar um número de versão extra (seu dígito menor do PCI) de maneira intencional, a fim de mover seus números de recurso / versão secundária de volta a um local, para não mais acionar seus critérios de auditoria interna.
De qualquer forma, respondendo à sua pergunta sobre controle de versão semântico, a especificação do controle de versão semântico declara:
Ênfase minha.
Portanto, a pergunta é: você está usando o quarto caractere para pré-lançamento / compilação de metadados? Ou é basicamente outra indicação de versão que você está lançando?
Se "yes", as especificações do versionamento semântico permitem isso. Se "não", tecnicamente você não está seguindo o controle de versão semântico.
Se você deseja segui-lo rigidamente ou não, é uma decisão que você e sua equipe precisam tomar. O objetivo do controle de versão semântico é ajudar na compatibilidade da API:
É um sistema que ajuda a tornar mais claro quando o controle de versão afeta os usuários a jusante da API.
Desde que sua API seja igualmente clara, não é um grande negócio o caminho que você escolher. O controle de versão semântico é simples, por exemplo, se eu estiver usando o 3.4.2 e precisar atualizar para o 3.4.10, sei que posso fazê-lo sem quebrar nada. Se a nova versão for 3.5.1, eu sei que é compatível com versões anteriores. E eu sei que a versão 4.0.1 seria uma mudança radical.
Isso faz parte do significado dos números de versão.
Ok, está bem. Você tem um sistema que funciona para você e atende às suas necessidades. Esse é o objetivo do controle de versão.
Se sua API for privada (apenas voltada para o interior), não importa realmente a versão, contanto que faça sentido para você e todos os que a utilizam. Onde a versão em um formato padrão é importante é quando você tem muitos outros consumidores da sua API que precisam saber "o que essa versão significa?"
Ter um sistema de versão arbitrário confundirá as pessoas que estão acostumadas com outros sistemas, como a versão semântica. Mas se ninguém está realmente usando seu sistema de versão, exceto as pessoas que o criaram - isso realmente não importa.
fonte
Na versão atual do Semantic Versioning, que é 2.0.0 , não. Há um requisito que define a versão como o formato XYZ, em que X, Y e Z são números inteiros não negativos que não contêm 0s iniciais:
No entanto, a capacidade de adicionar metadados é permitida para:
Algo importante a ser observado, no entanto, é que o Semantic Versioning é especificamente para software que declara uma API pública:
Isso tende a apoiar o desenvolvimento de bibliotecas ou serviços e não no nível do aplicativo.
O importante a considerar é o significado dos números de versão, tanto para uso interno quanto externo. As versões são apenas identificadores que permitem falar sobre diferenças de software em dois momentos diferentes. O versionamento semântico é um método de estabelecer regras, portanto, se você souber que um aplicativo está usando o versionamento semântico, poderá determinar com mais facilidade o nível de esforço necessário para atualizar seus pacotes. Seguir um padrão comum pode ser bom, mas se você não puder, por qualquer motivo, documentar as regras para seus usuários também deve ser suficiente.
fonte