É confuso não armazenar o número da versão de um projeto no código-fonte?

5

Atualmente, para criar lançamentos para o nosso projeto, estamos usando Travis CI faz o upload de binários sempre que uma tag é criado . Estamos a utilizar o controlo de versões semânticas , pelo que as nossas etiquetas têm o formato v<Major>.<Minor>.<Patch> . Nosso número de versão é definido pelo CMake, e para evitar problemas com o fato de ficar fora de sincronia com o número da versão da tag, estamos usando um script simples para extrair o número da versão da variável de ambiente TRAVIS_TAG .

Nosso CMakeLists.txt é algo assim:

execute_process(COMMAND .travis/get_version_from_tag.sh major OUTPUT_VARIABLE MAJOR)
execute_process(COMMAND .travis/get_version_from_tag.sh minor OUTPUT_VARIABLE MINOR)
execute_process(COMMAND .travis/get_version_from_tag.sh patch OUTPUT_VARIABLE PATCH)
set(VERSION ${MAJOR}.${MINOR}.${PATCH})

# Using the version number later for packaging, etc...

set(CPACK_PACKAGE_MAJOR ${MAJOR})
set(CPACK_PACKAGE_MINOR ${MINOR})
set(CPACK_PACKAGE_PATCH ${PATCH})
INCLUDE(CPack)

Eu gosto dessa abordagem porque facilita muito a publicação de lançamentos, e não há risco de esquecer de atualizar o número da versão embutida em um arquivo em algum lugar. Por outro lado, estou preocupado que possa ser um pouco confuso, pois a partir de uma cópia do código fonte, é impossível saber o número da versão.

Esta é uma configuração excessivamente complicada e confusa?

    
por Gordon Bailey 19.05.2016 / 16:22
fonte

1 resposta

2

Não realmente, se o código-fonte é obtido a partir do ramo marcado, então é óbvio qual versão é qual!

Você pode ter mais dificuldade se estiver trabalhando em uma ramificação, que provavelmente é tirada do tronco ou de uma tag para que você não saiba necessariamente a qual versão a fonte corresponde. Se você puder encontrar a versão da fonte, então não há problema. Se você não pode, então seus desenvolvedores só precisam ser mais cuidadosos. Se seus devs forem desleixados, um arquivo com o número da versão pode ajudá-los, mas você provavelmente terá problemas maiores nesse caso.

Um lugar onde você pode querer incluir um número de versão na origem está em um readme ou changelog. Algumas pessoas atualizam isso manualmente (resumindo alterações) ou o geram a partir de seu SCM, mas acho melhor ainda enviá-lo para o diretório de origem depois que ele é criado como parte de uma construção. Se fizer isso, você terá o número da versão no topo, independentemente do ramo de origem que buscar.

    
por 19.05.2016 / 16:56
fonte