2010-01-26 4 views

Répondre

1

Je n'étais pas au courant que git tag pouvait produire automatiquement un numéro de version.
Vous font allusion peut git describe

RCS peut être un moyen de store, and then display the version, ne pas générer un.

Les schémas de numéro de version are many (p4 uses its own), plus les étiquettes doivent être cleaned up once in a while.
Vous aurez besoin d'une sorte de script pour générer un (le followinf vient de la liste de diffusion p4):

Pour le crétin qui insiste sur le fait que « chaque dernière modification un nouveau numéro de version » Je vous suggère la suivant: [Attention: cela est Perforce-centrée.]

  1. Votre makefile pourrait générer version.h en exécutant un script qui fait quelque chose comme ceci:
CHANGENUM=`p4 changes -m1 -s submitted //depot/main/...#have | cut -f2 -d' '` 
echo "#define VERSION \"main codeline to change #$CHANGENUM\" " > $SRC/include/version.h 

2. Ensuite, vous faites une construction et la chaîne de version (pour tout ce que références VERSION) est automatiquement correcte.
Bien sûr, je ferais ce version.h truc pour "builds officiels" et "builds du jour au lendemain" et de faire le version.h par défaut que les développeurs utilisent ont une chaîne codée en dur à l'effet de "construire à partir de la ligne principale mais pas officielle - ne pas déployer ".

+0

Merci, VonC. Ce dont je parle n'est pas un projet C/C++, c'est juste un tas de documents (je vais les taper avec le numéro de version périodiquement). Mais je suppose que l'idée de base est la même. Je vais créer un fichier VERSION et utiliser votre script pour le mettre à jour. Je viens d'avoir deux autres questions: 1. Où dois-je mettre ce fichier VERSION? Si je mets à jour le fichier VERSION, je suppose que le CHANGENUM change à nouveau; 2. De cette façon, je n'ai aucune garantie de déclencher ce script pour mettre à jour le fichier VERSION automatiquement, non? (Il y a quelques gars qui peuvent atteindre et changer le contenu de ce dossier) – aXqd

+0

@aXqd: l'idée est en effet la même, pour n'importe quelle langue. L'emplacement habituel pour un tel fichier est le répertoire racine, mais tout autre endroit * défini par convention * dans votre projet fera l'affaire. Le déclenchement n'est pas garanti à * toujours * fonctionner de cette façon, donc une sorte de déclencheur de changement de contenu peut être mieux ici. – VonC

+0

Désolé, l'anglais n'est pas ma langue maternelle. Ce que je voulais demander par ma 1ère question est que 'Après avoir fait un submit, je vais déclencher un script pour mettre à jour le fichier VERSION, mais ensuite je dois soumettre ce nouveau fichier VERSION, donc le CHANGENUM changera encore'. Cela semble être une boucle ici. – aXqd

Questions connexes