Quels fichiers générés par Autotools dois-je conserver dans le référentiel de contrôle de version?

Je suis nouveau sur les autotools et je travaille sur un projet C. Je veux append mon projet à un repository git. Quels fichiers générés par les autotools que je dois suivre dans mon système de contrôle de version et qui doivent être ignorés?

Vous ne devez conserver aucun fichier sous contrôle de version qui ne soit modifié manuellement. Cela signifie que tout fichier généré doit être ignoré par le système de contrôle de version. Je mets essentiellement que le suivant sous contrôle de version:

  • configure.ac
  • Makefile.am
  • les fichiers de documentation tels que AUTHORS , NEWS etc.
  • Makefile.am dans les sous-répertoires

Pour résoudre le problème d’avoir une version “prête à installer” mise en place par Scharron, certaines personnes incluent un script dans le répertoire racine du projet, appelé bootstrap ou autogen.sh , que vous exécutez une fois lorsque vous vérifiez une nouvelle copie. Vous pouvez voir un exemple dans l’un de mes projets ici . Pour un projet plus simple, votre autogen.sh doit uniquement comporter une seule ligne:

 autoreconf --install || exit 1 

bien que certaines personnes préfèrent exécuter ./configure automatiquement à la fin de autogen.sh .

Pourquoi ne pas suivre tous les fichiers générés dans le contrôle de version? Parce que leur contenu dépend de la machine sur laquelle vous construisez, de la version des autotools que vous avez générée et de la phase de la lune. Chaque fois que l’un de ces changements, les fichiers d’autotools générés changeront, vous obtiendrez beaucoup de courrier indésirable dans vos commits.

En outre, toute personne qui vérifie votre code en dehors du contrôle de version afin de le construire devrait avoir les outils de développement appropriés installés, de sorte que vous n’avez vraiment pas besoin de vous soucier des personnes qui rencontrent des problèmes à cause des autotools manquants.

Ce que VonC dit à propos des projets C fournis avec un fichier de configure pour générer le fichier Makefile est vrai pour les dissortingbutions de code source (le fichier .tar.gz obtenu lorsque vous tapez make dist ) mais pas nécessairement pour les copies fraîchement extraites du contrôle de version.

Note: Je suis d’accord avec la réponse de ptomato et je laisse cette réponse en tant que Wiki communautaire.
Cela a du sens pour les dissortingbutions de code source, mais votre projet peut ne pas en être un.
Pour des raisons de développement, la réponse de ptomato a plus de sens.


Tous les projets C sont généralement accompagnés d’un fichier configure capable de générer le Makefile utilisé pour la compilation.

Ainsi, lorsque vous considérez la chaîne d’autotool, je vous recommande de contrôler tous les fichiers générés jusqu’au fichier configure, car ils sont normalement une opération de génération unique.

http://upload.wikimedia.org/wikipedia/commons/thumb/8/86/Autoconf.svg/309px-Autoconf.svg.png

Cela signifie que toute personne ayant une copie de votre projet de version peut immédiatement démarrer:

 ./configure make make install 

Donc, bien qu’il soit généralement vrai que vous ne devriez pas mettre à jour les fichiers générés, vous pourriez les stocker surtout si l’autre lecteur de ce projet peut:

  • bénéficier de ne pas recréer ces fichiers (pour un résultat identique)
  • Commencez immédiatement à configurer et comstackr.

En règle générale, vous ne devez conserver aucun fichier généré sur un référentiel (sinon, vous verriez les modifications et vous devez les valider / les annuler). Cependant, si vous souhaitez avoir la version “prêt à installer” ajoutée (= balisée) à votre référentiel, je vous recommande de conserver les fichiers de configuration et Makefile. Ils sont ceux nécessaires pour une installation, qui devrait fonctionner sans autotools.