Comment utiliser rsync pour sauvegarder un répertoire sans sous-répertoire git

43

Je veux copier mon crépertoire avec tous les sous-répertoires à l'exclusion du ./gitsous-répertoire. Je le fais en utilisant rsync:

echo "copy c and sh files "
rsync -a --include='*.c' --include='*.sh' --include='*/' --exclude='*' ~/c/ ~/Dropbox/Public/c
# remove .git directory = do not send it to dropbox. Thx to Tomasz Sowa
rm -rf ~/Dropbox/Public/c/.git

Puis-je le faire mieux?

Adam
la source

Réponses:

48

Ajoutez simplement une exclusion explicite pour .git:

rsync -a --exclude='.git/' --include='*.c' --include='*.sh' --include='*/' --exclude='*' ~/c/ ~/Dropbox/Public/c

Une autre option consiste à créer ~/.cvsignorecontenant la ligne suivante avec tous les autres répertoires que vous souhaitez exclure:

.git/

Quetza
la source
Il est spécifié comment vous devez donner le chemin --exclude. Si vous avez des problèmes, consultez cette réponse .
totymedli
32

Vous pouvez simplement utiliser rsync --cvs-exclude. Il ignore également les .gitrépertoires.

Attention, ceci ignore également les répertoires appelés corecomme se produisant dans les fichiers source Magento.

sebastianwagner
la source
10
Cela fonctionne pour le .gitrépertoire de niveau supérieur mais pas pour les .gitrépertoires des sous-modules. Il n'ignore pas non plus les fichiers Git .gitmodules.
maxschlepzig