É um sistema de atribuição de números, ou mesmo sequências de texto gerais, a diferentes versões de programas de computador ou projetos semelhantes. O propósito básico disso é distinguir diferentes versões umas das outras, ao mesmo tempo em que se sabe qual é a mais nova e atualizada, os identificadores de versão geralmente vão além e fornecem mais informações, como a data exata do lançamento, se a versão é estável ou em teste, com quais outras versões ela é compatível e assim por diante.
Este é um sistema simples que tenta não depender de um sistema de controle de versão como o git, este sistema funciona sem ser capaz de fazer diferentes ramificações de desenvolvimento e pode ser usado confortavelmente mesmo se você estiver apenas desenvolvendo um projeto em um diretório local sem nenhuma ferramenta sofisticada. Claro que você pode usar um VCS, este sistema apenas fará com que você dependa menos dele para que você possa fazer transições mais fáceis para um VCS diferente ou abandonar completamente e apenas desenvolver seus projetos em um diretório com downloads de FTP.
A sequência de caracteres da versão tem o formato major.minor com a letra de sufixo opcional d, como 2,1d. Os números maiores e menores têm o significado usual. O número maior significa as grandes épocas de desenvolvimento e o estado geral do projeto, 0 significa que o projeto está em um estado anterior ao primeiro lançamento estável, altamente utilizável, otimizado, testado e refatorado que teria todas as metas e recursos definidos inicialmente implementados. 1 significa que o projeto já atingiu esse estado. Qualquer incremento adicional significa uma mudança significativa semelhante no projeto, revisão da API, reescrita completa e número extremo de novos recursos. que já foi incorporada com todos os testes, otimizações e refatorações.
No início de cada número de versão principal, o número da versão secundária é definido como 0 e dentro do mesmo número de versão principal, um número menor maior significa mudanças menores realizadas, correções de bugs, otimizações menores, recursos individuais adicionados ou removidos. O número menor não precisa ser incrementado em 1, o valor pode tentar refletir intuitivamente a significância das mudanças implementadas, as versões 0.2 e 0.201 diferem apenas muito ligeiramente, enquanto as versões 0.2 e 0.5 diferem significativamente. Da perspectiva do usuário, um número maior de major.minor significa uma versão mais nova do projeto e o usuário pode ter certeza de que versões com o mesmo número major.minor são as mesmas.
A principal diferença em relação às numerações de versão tradicionais é o sufixo d opcional. Este sufixo adicionado ao número de versão X significa uma ramificação em desenvolvimento com base na versão X. Se uma versão tiver o sufixo d, ela não precisa alterar os números major e minor com as alterações implementadas, ou seja, pode haver várias versões diferentes do projeto cujo número de versão é, por exemplo, 0.63d.
Com o sufixo d, não é mais válido que versões com o mesmo número sejam necessariamente as mesmas. Isso permite que o desenvolvedor não se preocupe em incrementar o número da versão a cada alteração, ou commit. O desenvolvedor simplesmente pega a versão de lançamento mais recente, adiciona o sufixo d e continua modificando esta versão sem se importar em alterar o número da versão a cada alteração e, quando as alterações estão prontas para lançamento, ele remove o sufixo d e aumenta o número da versão. O usuário pode escolher usar apenas a versão de lançamento sem o sufixo ou pode correr o risco de usar a versão de desenvolvimento mais recente.
Um projeto pode ser desenvolvido confortavelmente em um único branch git sem gerenciar branches estáveis e de desenvolvimento separados. O head do branch geralmente tem a versão mais recente em desenvolvimento, mas você pode apenas vincular a commits anteriores de versões de lançamento para que os usuários possam baixar as versões de lançamento. Você pode até não usar nenhum VCS e apenas desenvolver seu projeto em um diretório e fazer backups rígidos de cada versão de lançamento. Faça com que o número da versão seja derivado automaticamente, use o hash do source-code como número da versão, ou use o registro de data e hora UNIX do último commit, que permitirá determinar qual versão é mais recente.
Versão | Descrição | Lançamento? |
---|---|---|
0.0 | Iniciado | Sim |
0.0d | Adicionado licença e Makefile | Não |
0.0d | Adicionando um pouco de código | Não |
0.0d | Adicionando um pouco de código | Não |
0.01 | Tomando forma | Sim |
0.01d | Mais recursos adicionados | Não |
0.01d | Alguns bugs corrigidos | Não |
0.01d | Refatorado | Não |
0.2d | Mais recursos adicionados | Não |
0.9d | Bugs corrigidos | Não |
0.9d | Refatorado | Não |
1.0 | Bom, estável, testado, utilizável | Sim |
1.0d | Adicionado uma pequena otimização | Não |
2.0 | Reescrita completa para execução | Sim |
2.0d | Adicionado alguns recursos | Não |
2.0d | Bug corrigido | Não |
2.01 | Adicionado algumas melhorias | Sim |
... | ... | ... |
Faça com que o número da versão seja derivado automaticamente, por exemplo, use o hash do código-fonte como número da versão, ou talvez até melhor, use o timestamp Unix do último commit (que permitirá determinar qual versão é mais nova), ou algo similar.