As convenções de nomenclatura de versões diferentes são adequadas para projetos diferentes? O que você usa e por quê?
Pessoalmente, prefiro um número de compilação em hexadecimal (por exemplo, 11BCF), que deve ser incrementado com muita regularidade. E então para os clientes um número de versão simples de 3 dígitos, ou seja, 1.1.3.
1.2.3 (11BCF) <- Build number, should correspond with a revision in source control
^ ^ ^
| | |
| | +--- Minor bugs, spelling mistakes, etc.
| +----- Minor features, major bug fixes, etc.
+------- Major version, UX changes, file format changes, etc.
fonte
$version = New-Object System.Version 1, 2, 3, 4; $version.ToString(); $version.Build;
Versão semântica ( http://semver.org/ ) merece uma menção aqui. É uma especificação pública para um esquema de versão, na forma de
[Major].[Minor].[Patch]
. A motivação para esse esquema é comunicar significado com o número da versão.fonte
Eu não uso, mas já vi e é uma estrutura interessante:
Year.Month.Day.Build
Auto explicado.
fonte
Eu tento usar a política do RubyGems Rational Versioning na qual:
fonte
Aqui está uma abordagem muito detalhada da numeração de versões:
N.x.K
, ondeN
eK
são números inteiros. Exemplos:1.x.0
,5.x.1
,10.x.33
. Usado para construções intermediárias .N.M.K
, OndeN
,M
eK
são inteiros. Exemplos:1.0.0
,5.3.1
,10.22.33
. Usado para liberações .N.x.x
, ondeN
é inteiro. Exemplo:1.x.x
. Usado para ramos de suporte .N.M.x
, ondeN
eM
são números inteiros. Exemplo:1.0.x
. Usado para ramificações de liberação .Aqui está a figura para uma ilustração simples da abordagem de numeração de versão:
PA
significa pré-alfaA
significa alfaB
significa betaAR
significa liberação alfaBR
significa liberação betaRC
significa liberação candidatoST
significa estávelAs vantagens dessa abordagem de numeração de versão são as seguintes:
N.x.K
) e release (N.M.K
). Release significa que um software com número de versão completo (N.M.K
) passou por algum tipo de processo de gerenciamento de qualidade na empresa / organização / equipe do fornecedor.Há também um diagrama mais complexo que representa a abordagem de versionamento em detalhes. Além disso, você pode encontrar slides de apresentação úteis que descrevem a transição para a abordagem de versão e o aplicativo SCMFViz ilustrando os princípios básicos da abordagem de numeração de versão. Os slides da apresentação também explicam por que é importante manter a mesma abordagem de versão durante toda a vida útil do projeto de software.
Pessoalmente, minha atitude em relação ao uso da versão da data em vez dos números reais da versão pressupõe que os desenvolvedores do software com versões datadas:
N
inN.M.K
) é responsável pela solução arquitetural e pelo princípio subjacente do aplicativo. O número da versão principalN
deve ser alterado de acordo com as mudanças na arquitetura ou nas principais idéias e princípios de seu funcionamento / funcionamento.Essa abordagem pode parecer um pouco controversa, mas acredito que seja a maneira mais direta de fornecer números de versão apropriados ao software.
fonte
Para cada versão principal lançada, não é incomum ter uma versão funcional que você chama internamente. Por exemplo, no meu último trabalho, nos referimos a uma versão principal com a seguinte convenção de nomenclatura inspirada no Ubuntu:
[doença doentia] [nome aliterativo do animal]
Que deu nomes como " Limp Lamprey ", " Wounded Wombat " e " Asthmatic Anteater ".
Certifique-se de que, a menos que seja um nome realmente legal, ele não vaze para seus clientes.
fonte
Generation.Version.Revision.Build (9.99.999.9999)
Geração raramente muda. Apenas uma grande virada no produto: DOS -> Windows, reengenharia completa.
A versão é para grandes alterações incompatíveis, nova funcionalidade, alterações em alguns paradigmas específicos no software, etc.
A revisão geralmente é feita (recursos menores e correção de erros).
Build é uma informação interna.
fonte
git describe
fornece uma boa extensão para qualquer convenção de numeração que você escolher. É fácil incorporar isso no seu processo de compilação / empacotamento / implantação.Suponha que você nomeie suas versões de release marcadas como ABC (major.minor.maintenance).
git describe
em um determinado commit, encontrará o ancestral marcado mais recente do commit, depois inclua o número de commits desde então e o SHA1 abreviado do commit:Se você está de fato em uma das versões, é claro, receberá a tag (1.2.3).
Isso tem o bom benefício de informar exatamente de qual fonte você criou, sem precisar numerar todas as versões.
fonte
Major.Minor.Public (build) [alfa / beta / trial], como "4.08c (1290)"
fonte
Prefiro números de versão que atribuem algum significado semântico. Desde que você possa usar o número da versão para rastrear os erros relatados com uma versão específica das alterações que ocorreram no código-fonte (e no sistema de gerenciamento de atividades), provavelmente você está usando o método certo.
Como uso o .NET, estou preso ao sistema de numeração de versões do .NET, mas tento atribuir significado semântico aos números.
major.minor.build.revision
Sempre garantimos que o número da versão seja visível de alguma forma (com nossos programas baseados em console em lote impressos no console e em um arquivo de log, com os aplicativos da Web na barra de menus na parte superior)
Dessa forma, se os clientes reportarem problemas, podemos usar o número da versão para rastrear se eles estão usando a versão mais recente e quantos problemas tivemos com versões específicas.
É tudo sobre rastreabilidade!
fonte
Usamos Major.Minor.Build # .YYMMDD [sufixo], como geralmente fazemos apenas uma produção em um determinado dia (mas usamos o sufixo ab / c / d se houver mais de um) e o YYMMDD fornece aos usuários / clientes / gerenciamento uma indicação da idade da construção, onde 6.3.1389 não.
Os números principais aumentam com recursos significativos do produto (pagos).
Os números menores aumentam com correções / melhorias (atualização gratuita).
A construção sempre aumenta; nem todas as embarcações são construídas, portanto não é uma progressão linear.
fonte
Os números de versão devem ter informações suficientes para evitar conflitos e corrigir um erro nos problemas do tipo de versão incorreta, mas não devem transmitir informações adicionais que não são relevantes.
Por exemplo, se você usar a data em que os clientes podem dizer que possuem uma versão mais antiga, e os patches contra versões antigas podem ter versões confusas.
Eu pessoalmente gosto de versionamento semântico :
Major
.Minor
.Patch
Patch
incrementa toda vez que você libera uma compilação.Minor
incrementa sempre que a funcionalidade compatível com versões anteriores é adicionada.Major
incrementa quando a nova funcionalidade não é compatível com versões anteriores.Major
== 0 você está em alfa / pré-lançamento.Major
> = 1 são seus lançamentos públicos.1.5.3
eles poderiam dizer rapidamente que poderiam atualizar para1.5.4
obter os patches, isso1.6.0
acrescentaria funcionalidade e que não deveriam ser atualizados2.0.0
(pelo menos sem manipular a alteração).fonte
X.Y.Z
é o nosso número da versão interna.X.Y
é o número da versão pública, aquela que tem um significado para nossos clientes. Quando umaX.Y.Z
versão se torna pública, nunca haverá umaX.Y.(Z+1)
versão: a versão pública é sempre a última da série.X
é incrementado quando uma versão principal é lançada.Y
é usado para as ramificações de manutenção dessas versões principais, apenas para correções de bugs.Z
é usado internamente e não tem significado fixo. Até agora, crio uma novaZ
versão quando penso que o aplicativo tem um conjunto de recursos interessantes para mostrar a não desenvolvedores e é relativamente estável. Dessa forma, eu posso mostrar uma demonstração da "última versão válida" do aplicativo quando alguém perguntar. Em um futuro próximo, pretendo usar asZ
versões numéricas para nomear um "alvo" de recursos, em nosso bugtracker.Como observação, usamos o maven (com o
release
comando) para aumentar o número da versão. Portanto, também existemX.Y.Z-SNAPSHOT
versões (o que indica qualquer versão entreX.Y.(Z-1)
eX.Y.Z
).fonte