Supplantation numéros de version pour les nouvelles versions dans les fichiers associés (documentation)

StackOverflow https://stackoverflow.com/questions/986521

Question

Je serais intéressé de savoir comment vous gérez là le heurtant le numéro de version pour la délivrance de nouvelles versions.

Comment gérez-vous le numéro de version dans les fichiers associés comme les pages de manuel, etc.

Le logiciel est construit avec la chaîne d'outils gnu si autoconf, automake, etc sont disponibles et utilisés pour le numéro de version de l'application. Donc, ces informations peuvent être réutilisées.

git est utilisé comme VCS.

Une possibilité serait d'introduire un supplémentaire, nouvelle cible Makefile.am qui fait un sed / awk pour remplacer le numéro de version et les dates dans tous les fichiers associés. Cet objectif pourrait être appelé une fois au début (à droite après branchement) du développement d'une nouvelle version.

Ensuite, le projet pourrait construire avec l'information correcte quand les gens feraient clone git du projet ou lorsqu'un tarball de libération est fait. Bien sûr, il faut se rappeler d'exécuter cet objectif de faire lors du démarrage du développement d'une nouvelle version.

Une autre option serait de faire le remplacement sed / awk avec un crochet pour la dist target.But cela a mis le dépôt git du projet dans un état étaient pas de numéro de version correcte est associée aux fichiers associés.

Je préfère faire la première solution car il enregistre également le correct numéro de version dans l'histoire git.

Lorsque vous effectuez un remplacement sed / awk Préférez-vous le faire « dans le fichier » ou avec un modèle en fichier liek les outils autoconf / automake font. Je vois des avantages et des inconvénients dans les deux méthodes.

Comment gérez-vous versioning de fichiers associés. Avez-vous les changer au début de la phase de développement, vous les changer quand juste avant expédition , faites-vous le remplacement infile ou préférez-vous à l'aide d'un modèle?

THX.

Était-ce utile?

La solution

Je pense que la manière standard de le faire est d'utiliser le système de crochet de Git et m4 ou sed / awk pour faire la recherche / remplacer comme vous le suggérez. Vous avez juste besoin d'un jeton spécial avec un commentaire dans chaque fichier (probablement dans l'en-tête).

Voici la référence githooks et voici quelques pages écrites par des personnes à résoudre le même problème :

Ces deux reposent sur le stockage du numéro de version dans un fichier quelque part dans votre arborescence source.

Je suis également venu à travers Touque appelé 0release qui prétend automatiser la création de libération (et la mise en numéros de version ).

Enfin, en ce qui concerne les numéros de version, cette question est abordée dans plusieurs autres questions:

Autres conseils

Une solution commune est aujourd'hui d'invoquer AC_INIT avec un argument m4_esyscmd pour générer la version à partir git. Par exemple, le configure.ac de autoconf contient les lignes:

AC_INIT([GNU Autoconf],
        m4_esyscmd([build-aux/git-version-gen .tarball-version]),
        [bug-autoconf@gnu.org])

où la construction-aux / git version-gen est un script simple qui appelle 'git décrire' pour générer le numéro de version. (Voir gnulib)

Il y a des inconvénients à cette approche, mais il peut être efficace.

Nous utilisons le système major.minor.patch classique, qui obtient appliqué pour libérer les candidats comme une « étiquette », nous avons un script qui balises comme une validation du numéro de version, plutôt que d'utiliser un git « objet tag ». Toute la numérotation des versions est faite « à la main ». Il fonctionne assez bien, parce que le numéro de version est créée par les scripts Délie sur la mise en scène », ce qui est beaucoup plus tard dans le processus de développement. Nous ne vous embêtez pas en utilisant l'un des crochets git, parce que nous ne devons vraiment, si un engagement est de ne pas laisser l'environnement de développement, alors il n'a pas besoin id autre que son code SHA interne.

Nous essayons de faire respecter que chaque « patch » libération doit être binaire compatible avec les autres versions avec la même étiquette majeure, mineure.

De cette façon, quoi que ce soit avec une étiquette doit au moins construire, mais il est possible ou tout à fait probable que cela ne fonctionnera pas aux spécifications.

Un raffinement serait d'obtenir le service d'assurance qualité pour créer un objet d'étiquette signé sur tout ce qui est « QA approuvé », mais pour l'instant nous comptons sur d'autres documents pour cela.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top