Regras do versionamento semântico
Regras
do versionamento semântico
Para
o versionamento semântico são recomendadas 11 regras que ajudam a garantir a
estabilidade das dependências do projeto.
Regra 1 – API pública
Software
usando Versionamento Semântico DEVE declarar uma API pública. Esta API poderá
ser declarada no próprio código ou existir estritamente na documentação, desde
que seja precisa e compreensiva.
Regra 2 – Formato do número de versão
Um
número de versão normal DEVE ter o formato de X.Y.Z, onde X, Y, e Z são
inteiros não negativos, e NÃO DEVE conter zeros à esquerda.
X é
a versão maior (major version).
Y
é a versão menor (minor version).
Z
é a versão de Correção (patch version).
Cada
elemento DEVE aumentar numericamente.
Exemplo:
1.9.0 = > 1.10.0 = > 1.11.0.
Regra 3 – Versões imutáveis
Uma
vez que um pacote versionado foi lançado (released), o conteúdo desta versão
NÃO DEVE ser modificado. Qualquer modificação DEVE ser lançado como uma nova
versão.
Regra 4 – Desenvolvimento inicial
No
início do desenvolvimento, a versão Maior DEVE ser zero (0.y.z). Qualquer coisa
pode mudar a qualquer momento. A API pública não deve ser considerada estável.
Regra 5 – Versão 1.0.0
Versão
1.0.0 define a API como pública. A maneira como o número de versão é
incrementado após este lançamento é dependente da API pública e como ela muda.
Regra 6 – Versão de correção (patch
version)
Versão
de Correção Z (x.y.Z | x > 0) DEVE ser incrementado apenas se mantiver
compatibilidade e introduzir correção de bugs. Uma correção de bug é definida
como uma mudança interna que corrige um comportamento incorreto.
Regra 7 – Versão Menor (minor version)
Versão
Menor Y (x.Y.z | x > 0) DEVE ser incrementada se uma funcionalidade nova e
compatível for introduzida na API pública. DEVE ser incrementada se qualquer
funcionalidade da API pública for definida como descontinuada. PODE ser
incrementada se uma nova funcionalidade ou melhoria substancial for introduzida
dentro do código privado. PODE incluir mudanças a nível de correção. A versão
de Correção deve ser redefinida para 0 (zero) quando a versão Menor for
incrementada.
Regra 8 – Versão Maior (major version)
Versão
Maior X (X.y.z | X > 0) DEVE ser incrementada se forem introduzidas mudanças
incompatíveis na API pública. PODE incluir alterações a nível de versão Menor e
de versão de Correção. Versão de Correção e Versão Menor devem ser redefinidas
para 0 (zero) quando a versão Maior for incrementada.
Regra 9 – Versões de pré-lançamento (pre-release
versions)
Uma
versão de Pré-Lançamento (pre-release) PODE ser identificada adicionando um
hífen (dash) e uma série de identificadores separados por ponto (dot) imediatamente
após a versão de Correção. Identificador DEVE incluir apenas caracteres
alfanuméricos e hífen [0-9A-Za-z-]. Identificador NÃO DEVE ser vazio. Indicador
numérico NÃO DEVE incluir zeros à esquerda. Versão de Pré-Lançamento tem
precedência inferior à versão normal a que está associada. Uma versão de
Pré-Lançamento (pre-release) indica que a versão é instável e pode não
satisfazer os requisitos de compatibilidade pretendidos, como indicado por sua
versão normal associada. Exemplos: 1.0.0-alpha, 1.0.0-alpha.1, 1.0.0-0.3.7,
1.0.0-x.7.z.92.
Regra 10 – Metadados de construção
Metadados
de construção (Build) PODE ser identificada por adicionar um sinal de adição
(+) e uma série de identificadores separados por ponto imediatamente após a
Correção ou Pré-Lançamento. Identificador DEVE ser composto apenas por
caracteres alfanuméricos e hífen [0-9A-Za-z-]. Identificador NÃO DEVE ser
vazio. Metadados de construção PODEM ser ignorados quando se determina a versão
de precedência. Assim, duas versões que diferem apenas nos metadados de
construção, têm a mesma precedência. Exemplos: 1.0.0-alpha+001,
1.0.0+20130313144700, 1.0.0-beta+exp.sha.5114f85.
Regra 11 – Precedência de versões
A
precedência refere como as versões são comparadas com cada outra quando
solicitado. A precedência DEVE ser calculada separando identificadores de
versão em Maior, Menor, Correção e Pré-lançamento, nesta ordem (metadados de
construção não figuram na precedência). A precedência é determinada pela
primeira diferença quando se compara cada identificador da esquerda para
direita, como se segue: Versões Maior, Menor e Correção são sempre comparadas
numericamente. Exemplo: 1.0.0 < 2.0.0 < 2.1.0 < 2.1.1. Quando Maior,
Menor e Correção são iguais, a versão de Pré-Lançamento tem precedência menor
que a versão normal. Exemplo: 1.0.0-alpha < 1.0.0. A precedência entre duas
versões de Pré-lançamento com mesma versão Maior, Menor e Correção DEVE ser
determinada comparando cada identificador separado por ponto da esquerda para
direita até que seja encontrada diferença da seguinte forma: identificadores
consistindo apenas dígitos são comparados numericamente e identificadores com
letras ou hífen são comparados lexicalmente na ordem de classificação ASCII.
Identificadores numéricos sempre têm menor precedência do que os não numéricos.
Um conjunto maior de campos de pré-lançamento tem uma precedência maior do que
um conjunto menor, se todos os identificadores anteriores são iguais. Exemplo:
1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-alpha.beta < 1.0.0-beta <
1.0.0-beta.2 < 1.0.0-beta.11 < 1.0.0-rc.1 < 1.0.0.
Referências:
1. https://semver.org
2. https://fjorgemota.com/versionamento-semantico-ou-como-versionar-software
Comentários
Postar um comentário