git archive vs cp -R
-
22-08-2019 - |
Question
Si j'ai un clone d'un dépôt git comme une copie en cache sur un serveur distant pour le déploiement de style Capistrano / vlad, est-il préférable de le faire A)
git archive --format=tar origin/master | (cd #{destination} && tar xf -)
ou B)
cp -R cached-copy #{destination} && rm -Rf #{destination}/.git
Pour clarifier, le référentiel est déjà sur le serveur distant, et je veux juste copier une version particulière dans un répertoire de presse sur le même serveur lors du déploiement.
La solution
Je dirais en fait
rsync -avP /local/repo/* server:/remote/repo
Cela fonctionne aussi longtemps qu'il est OK sauter tous les fichiers de point dans la prise en pension, non seulement .git
. Si vous voulez sauter uniquement .git
alors vous aurez besoin de l'option -f
et la page de manuel.
I love rsync . Fonctionne très bien et la plupart du temps vous pouvez l'utiliser comme vous le feriez utiliser scp!
Autres conseils
A)
Vous enregistrez le réseau aérien de transférer le répertoire .git qui pourrait être assez important selon la quantité de l'histoire et des objets pas dans la tête en cours.
Si vous avez déjà voulu avoir un dépôt git réel sur la machine distante, vous êtes mieux pousser à un véritable dépôt et seulement devoir changer les deltas.
Ni!
Une meilleure façon de le faire est à:
-
git fetch
votre cache - Clone le cache de votre répertoire courant (avec les options de
--no-checkout
activé) - Commander la commettras vous voulez.
Quand vous faites un clone local Git utilise les hardlinks. Cela signifie que, jusqu'à ce que vous modifiez un fichier, que vous l'habitude, vous pouvez avoir 1000 déploiements et utiliser (pratiquement) que l'espace dont vous avez besoin pour un. De cette façon, a beaucoup plus rapide aussi l'archivage ou rsync.