Tarballing sans Git métadonnées
Mon arbre source contient plusieurs répertoires qui sont à l'aide de Git contrôle de code source, et j'ai besoin d'archive l'ensemble de l'arbre à l'exclusion de toute référence à la Git métadonnées ou des fichiers journaux personnalisés.
Je pensais avoir un aller à l'aide d'une combinaison de trouver/egrep/xargs/tar, mais de toute façon le fichier tar contenant le .git répertoires et l' *.les fichiers journaux.
C'est ce que j'ai:
find -type f . | egrep -v '\.git|\.log' | xargs tar rvf ~/app.tar
Quelqu'un peut m'expliquer mon incompréhension ici? Pourquoi est-tar traiter les fichiers que trouver et egrep sont de filtrage?
Je suis ouvert à d'autres techniques.
Vous devez vous connecter pour publier un commentaire.
Vous aurez une mauvaise surprise lorsque le nombre de fichiers augmentation de plus d'une commande xargs: Alors, vous allez d'abord faire un fichier tar de la première fichiers, puis écraser le même fichier tar avec le reste des fichiers.
GNU tar a l'option --exclude qui permettra de résoudre cette question:
Vous pouvez essayer directement avec le goudron option --exclude-vcs:
Par exemple:
Il fonctionne avec Git.
Essayer quelque chose comme cela:
Ajouter votre .les fichiers journaux et tout le reste vous ne voulez pas être emballés pour votre .gitignore fichier.
À exclure système de contrôle de version répertoires:
tar --exclude-vcs
Cela exclut svn, git métafichiers etc.
[slap] Bah! Les paramètres de trouver ont été dans le mauvais ordre! Je n'ai pas vu les mises en garde, parce qu'ils le tour de l'écran. Cela a permis '.' pour passer à travers egrep qui a causé de goudron pour engloutissent tout.
Qui va m'apprendre pour noyer les messages importants en verbose debug.
Cela fonctionne:
Le plus récent GNU tar a la possibilité d'exclure de contrôle de version répertoires automatiquement en utilisant le drapeau --exclude-vcs . Cela va prendre soin de .git en tant que bien.
Vous pourriez le faire sans grep. trouver est puissant
git archive peut-être ce que vous cherchez.
Pour le faire à l'extérieur le répertoire app:
Pour moi, le
.gitignore
le contenu est ce dont j'avais besoin:tar cvfz $PROJECT.tar.gz --exclude-from=$PROJECT/.gitignore $PROJECT
--exclude-from
est de lire le contenu du fichier et exlucde les modèles qui y sont énumérés