50 votes

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

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

66voto

ptomato Points 24461

Vous ne devez pas conserver sous contrôle de version des fichiers qui ne sont pas édités à la main. Cela signifie que tout fichier généré doit être ignoré par le système de contrôle de version. En gros, je mets uniquement les éléments suivants 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épondre au point soulevé par Scharron d'avoir une version "prête à installer", certaines personnes incluent un script dans le répertoire racine du projet, appelé bootstrap o autogen.sh que vous n'exécutez qu'une seule fois lors du retrait d'une nouvelle copie. Vous pouvez voir un exemple dans un de mes projets aquí . Pour un projet plus simple, votre autogen.sh ne doit vraiment consister qu'en une seule ligne :

autoreconf --install || exit 1

bien que certaines personnes préfèrent courir ./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 d'autotools avec laquelle vous les avez générés et de la phase de la lune. Chaque fois que l'un de ces éléments change, les fichiers autotools générés changent, et vous obtiendrez beaucoup de déchets dans vos commits.

De plus, toute personne qui extrait votre code du contrôle de version afin de le construire est censée disposer d'outils de développement adéquats. Vous n'avez donc pas à vous inquiéter de voir des personnes rencontrer des problèmes en raison de l'absence d'outils automatiques.

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

12voto

VonC Points 414372

Note : Je suis d'accord avec ptomato 'ss réponse et laissez cette réponse comme Wiki communautaire.
Cela a du sens pour les distributions de code source, mais votre projet n'en est peut-être pas un.
Pour les besoins du développement, la réponse de ptomato est plus logique.


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

Ainsi, lorsque vous considérez la chaîne autotool, je recommanderais de versionner 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 possédant une copie de votre projet de version peut commencer immédiatement :

./configure
make
make install

Ainsi, bien qu'il soit généralement vrai que vous ne devriez pas versionner les fichiers générés, vous pourriez les stocker, surtout si l'autre lecteur de ce projet le peut :

  • l'avantage de ne pas re-générer ces fichiers (pour un résultat identique)
  • commencer immédiatement à configurer et à compiler.

-2voto

Scharron Points 5866

En général, vous ne devriez pas garder de fichiers générés sur un dépôt (sinon vous verrez des changements et devrez les commiter/rétablir). Cependant, si vous voulez avoir une version "prête à installer" ajoutée (= étiquetée) à votre dépôt, je vous recommande de garder les fichiers configure et Makefile. Ce sont ceux qui sont nécessaires pour une installation, qui devrait fonctionner sans autotools.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X