2009-03-31 12 views
1

Je suis un développeur unique, en utilisant GIT pour le contrôle de version d'un logiciel embarqué écrit en C. Le logiciel doit être conscient de sa version, et il est actuellement fait en incluant un fichier d'en-tête avec un seul #define:Obtention de la version

#define SOFTWARE_VERSION "1.021"

Ce fichier d'en-tête est créé automatiquement par pré-build script Python qui tente d'obtenir le dernier dépôt git sous forme d'étiquette (tagger toutes les versions publiées avec la chaîne de version). C'est la commande que j'utilise pour obtenir la dernière version de la chaîne.

git décrit --tag TÊTE

l'ensemble des travaux de la chaîne comme prévu, mais il ne semble pas robuste (je pense à briser comme référentiel devient plus compliqué/ramifié). En outre, je pense que je pourrais manquer quelque chose de crucial, car il doit y avoir un moyen plus facile de le faire.

Quelqu'un peut-il apporter des améliorations sur le workflow ou les détails de mise en œuvre? (si quelqu'un est intéressé, je peux poster un script python qui analyse la sortie de git describe)

Répondre

2

Séparer le numéro de version du logiciel du numéro de version du système CM.

Oui, vous devez connaître la version ou l'étiquette du système CM correspondant à un numéro de version donné, mais n'utilisez pas le numéro de version du système CM pour définir le numéro de version. Avec un simple VCS comme RCS ou SCCS, et avec des programmes simples (un fichier), vous pouvez utiliser le VCS pour fournir la version du programme - je le fais moi-même. Mais tous mes programmes complexes utilisent un schéma de numérotation des versions complètement séparé, entièrement séparé des numéros de version dans le VCS.

+0

Oui, utilisez votre script de préconfiguration pour * écrire * le tag sur votre repo avec un numéro de version que vous avez calculé ou entré. – Paul

+0

Je n'utilise pas la version CM pour définir le numéro de version. Je place la balise à la main, et cela n'a rien à voir avec l'identifiant de validation CM. En utilisant le git describe, je peux obtenir la dernière balise, mais je ne suis pas satisfait de la sortie qui doit être analysée pour être utile. On se sent comme un hack ... – Josip

1

Comme mentionné dans ce SO question, git describe pourrait être ce que vous devez faire référence à une "version" intermédiaire qui est à la fois:

  • basé sur la dernière version applicative (ie 'tag')
  • basé sur la validation interne (ie sha1)
Questions connexes