web-dev-qa-db-fra.com

Pour intégrer les versions GIT en tant que numéros de construction ou non?

Un collègue et moi avons pris des virages en discussion/discussion sur les problèmes/mérites d'intégration d'une version dérivée du référentiel GIT actuel dans notre code chaque fois qu'il s'appuie.

Nous pensons que les mérites incluent:

  • Pas besoin de s'inquiéter de l'erreur humaine dans la mise à jour d'un numéro de version
  • Traçabilité entre ce que nous trouvons dans un appareil et le code source, il a été dérivé de

Les problèmes qui sont apparus (pour nous) incluent:

  • Les systèmes de construction dérivés de l'IDE (par exemple Mplabx) peuvent rendre difficile à comprendre où mettre ces types de crochets dans (et cela peut se retrouver assez fringée à la fin)
  • Plus de travail pour l'intégrer en réalité dans les scripts de construction/makefiles
  • Couplage à une approche de construction particulière (par exemple, si une personne s'appuie sur Xcode et l'autre Mplabx) peut créer des surprises en aval

Nous sommes donc curieux où d'autres ont atterri sur ce débat. Il est vraiment facile pour la discussion de devenir anecdotique. Il y a beaucoup de monde là-bas qui insistent sur l'automatisation de bout en bout, accrochent la quantité de travail avant et le couplage en créant. Et il y a beaucoup d'autres de l'autre côté du débat, qui font simplement la chose la plus facile qui fonctionne et vivent avec les risques.

Y a-t-il une réponse raisonnée à quel côté est le mieux pour atterrir?

12
Travis Griggs

Nous utilisons Git décrit avec des balises de version. Le flux est fondamentalement:

  • créer une balise pour la version que nous travaillons sur (par ex. V1.1.2)
  • chaque construction git describe
  • lorsque nous expédions, utilisez le nom de la balise

git describe fournit le nom de la balise, le nombre de commits depuis la balise et le hachage de la balise. Un étiquette d'échantillon ressemble à:

v1.1.2-6-a3b27gae

Cela bénéficie des avantages que les développeurs reçoivent des haubans, donc si quelque chose se casse entre les constructions, le développeur peut facilement diffuser les changements. C'est aussi stupide simple à gérer; Demagez-vous simplement que votre équipe dirigeait Créez et appuyez sur la balise sur une nouvelle succursale BUGFIX et votre système de construction s'occupe du reste.

Nous émettons le hachage (et le numéro de construction) car il est plus facile pour les utilisateurs de comprendre nos numéros de version. Nous constatons que cela nous donne le meilleur des deux mondes, tout en fournissant suffisamment d'informations pertinentes lors de la création d'une version.

Actuellement, nous avons une version légèrement plus compliquée de cela, mais l'idée reste.

15
beatgammit

Nous avions l'habitude d'être une boutique SVN afin que ce math était facile - le nombre de bâtiments était le SVN REV et c'était crevé. Nous avons essayé de conserver cela lorsque nous avons commencé à passer à DCVSSe et avons constaté que cela a échoué pour quelques raisons.

Premièrement, qui sait si Rev 69BC333BC8D8 est avant ou après ou simultanément avec REV 25B0F0D1052C? Il y a très peu de contexte par rapport au système SVN lorsque vous connaissez au moins 101 après 100. Deuxièmement, la nature du contrôle de la source DCVS rend les choses non linéaires à bien des égards lorsque les constructions ultérieures ne font pas progresser la même balle.

Nous nous sommes enfin installés sur l'utilisation d'un serveur de construction pour distribuer des numéros de construction à des choses car elle avait la bonne visibilité et la bonne capacité à le gérer.

6
Wyatt Barnett

Je lie directement la sortie du statut GIT, du journal et du diffus dans l'exécutable. Ensuite, il y a une option pour imprimer cela. L'avantage est que vous êtes non seulement capable de déterminer quelle branche votre binaire a été créée, mais également les changements de code source non engagés sont inclus. S'il te plait regarde:

https://github.com/colding/mercuryfix/tree/master/stdlib/scm_state

Vous devriez être capable d'utiliser ces 3 fichiers pour créer votre propre chose de SCM State Lib.

2
colding

J'utilise le schéma suivant pour un système de construction Visual Studio d'un C # DLL Pour générer automatiquement des numéros de version (nous avons historiquement eu des problèmes avec les déploiements qui ne sont pas effectués correctement, un moyen propre de garantir le déploiement de la version correcte s'est produite).

  • Major - codé dur 1, typiquement déterminé par l'entreprise
  • Mineure - Codé dur 0, typiquement déterminé par l'entreprise
  • Révision - Nombre de jours depuis le 1er janvier 2010 (ou toute autre date de début arbitraire)
  • Construire - la moitié du nombre de secondes depuis minuit (puisqu'il s'agit d'un numéro de 16 bits non signé)

Notez que cela suppose que vous avez 2 numéros non signés fongibles de 16 bits à jouer. Créer un système équivalent qui utilise des nombres plus petits pourraient également être effectués.

Notez également que les champs non numériques peuvent être utiles si vous pouvez les attacher sous forme de métadonnées. Par exemple, ajoutez le numéro de version GIT comme numéro de version d'information.

2
Guvante

Je recommanderais l'utilisation de AutOverevision .

Vous pouvez obtenir une sortie dans un format de variété, par exemple A en-tête de style C .

Il y a aussi quelques exemples (dans le direct Dir) de la façon dont vous pouvez accrocher les choses de sorte que, peu importe qui construisant et comment ils le font, ils obtiendront toujours les mêmes informations de version, même s'ils construisent d'une archive.

De plus, depuis en plus de git autoréevision fonctionne avec svn et hg Il facilite l'absorption de SVN sans avoir à changer trop une fois que vous l'avez installé.

0
dak180