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:
Dado um número de versão MAJOR.MINOR.PATCH, aumente o:
- Versão MAJOR quando você faz alterações incompatíveis da API,
- Versão MENOR quando você adiciona funcionalidade de uma maneira compatível com versões anteriores e
- PATCH versão quando você faz correções de erros compatíveis com versões anteriores.
- Rótulos adicionais para pré-lançamento e compilação de metadados estão disponíveis como extensões para o formato MAJOR.MINOR.PATCH .
Ê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.
E como uma questão secundária de nível superior e mais discutível, isso realmente importa?
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:
As correções de erros que não afetam a API incrementam a versão do patch, as adições / mudanças de API compatíveis com versões anteriores aumentam a versão secundária e as alterações incompatíveis com a API aumentam a versão principal.
Eu chamo esse sistema de "versionamento semântico". Sob esse esquema, os números de versão e a maneira como eles mudam transmitem significado sobre o código subjacente e o que foi modificado de uma versão para a seguinte.
É 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.
@enderland Sim, basicamente. PRINCIPAL (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.
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.