2010-09-30 2 views
2

Je (la plupart du temps) utilise git pour télécharger et compiler divers projets à partir de leur code source, en gardant ma source dans /usr/local/src et en installant les binaires en /usr/local/bin. Suite à la procédure de construction, habituellement avec ./configure && make && make install, il me reste beaucoup de cruft qui finit comme 'nouveaux' fichiers dans mon référentiel git local. À ma connaissance, make clean, make distclean et peut-être aussi (?) ./configure clean sont des procédures pensables afin de jeter la plupart des fichiers restants. Mais dans des scénarios spécifiques (voir l'exemple ci-dessous) je ne sais pas quoi faire pour rester "propre", comme avant l'installation ...Stratégies de nettoyage après la construction du code source en utilisant par exemple. Git

Un exemple récent - l'installation de jscoverage (via git svn) de http://svn.siliconforks.com/jscoverage/trunk jscoverage:

Les instructions de construction pour ce projet m'a incité à utiliser ./bootstrap.sh&& make && make install. Dans ce cas, après avoir terminé la compilation et l'installation, j'ai essayé toutes les commandes de nettoyage mentionnées ci-dessus (par hasard), mais je n'ai pas réussi à me débarrasser de tout.

Pour envelopper ma question: Y at-il une stratégie de nettoyage tout-puissant et supérieur que je n'ai pas compris? Comment abordez-vous ce problème de nettoyage lorsque vous utilisez un VCS tel que git, dans un workflow typique où vous 1.) télécharger - 2.) build - 3.) tirer des mises à jour du référentiel amont - 4.) construire encore une fois - et ainsi de suite ?

Répondre

4

Il existe également git clean ("Supprimer les fichiers non-suivis de l'arborescence de travail"). C'est une commande simple avec relativement peu d'options de ligne de commande. Voir le git-clean man page.

4

Pour un projet autotablé (c'est-à-dire, la plupart de ceux qui utilisent ./configure && make && make install), make distclean vous amènera à l'état d'une archive de distribution vierge. Ils ne vont pas supprimer tout générés automatiquement car cela introduirait des dépendances sur des outils supplémentaires pour l'utilisateur final.

De nombreux paquets fourniront un make maintainer-clean qui supprime autant que possible, mais qui restera quand même assez pour construire le projet (si vous avez les bons outils de développement). Cela ne supprimera toujours pas les fichiers comme Makefile.in, ce qui est nécessaire pour faire Makefile. L'idée ici est que ./configure && make devrait toujours être suffisant pour tout construire (à condition que toutes les dépendances soient installées).

Cela dit, je pense que vous posez potentiellement la mauvaise question ici. Si je ne veux pas garder la source pour quelque chose, je supprimerais simplement le répertoire source après l'installation. Si je prévois de tirer des mises à jour et de reconstruire, je ne serais même pas déranger avec un make clean: le point entier des outils comme make est qu'ils reconstruisent seulement les parties changées d'un projet et les défaites obsessionnelles de nettoyage cela.

Lorsque je développe mes propres projets, je marque n'importe quel fichier généré automatiquement comme ignoré par le VCS, donc il n'apparaît pas tout le temps. SVN a la propriété svn:ignore, mercurial a le fichier .hgignore et git a le fichier .gitignore, par exemple.

+0

+1 Examen approfondi des options disponibles –

+0

Jack: Merci pour une explication très instructive et approfondie.Je me sens un peu plus éclairé - surtout après avoir lu votre idée de ne pas avoir à nettoyer les choses si vous avez l'intention de simplement garder un dépôt pour les mises à jour et les projets de reconstruction. – Henrik

+1

Je vous aurais donné une "réponse acceptée" si je pouvais en donner plus d'un, mais puisque c'est impossible, @dgnorton l'obtient, puisque sa réponse a conduit au résultat exact que je recherchais (au départ) ; c'est-à-dire un clone git propre à l'ardoise propre. (Encore une fois, je réfléchis toujours à votre suggestion qu'il n'est pas nécessaire de nettoyer dans le but de ne garder qu'un repo pour les fins mentionnées ci-dessus (juste pour mettre à jour et reconstruire des projets). – Henrik

Questions connexes