Если у меня есть клон репозитория git в виде кэшированной копии на удаленном сервере для развертывания в стиле capistrano / vlad, лучше сделать A)
git archive --format=tar origin/master | (cd #{destination} && tar xf -)
или Б)
cp -R cached-copy #{destination} && rm -Rf #{destination}/.git
Чтобы уточнить, репозиторий уже находится на удаленном сервере, и я просто хочу скопировать определенную версию в каталог выпусков на том же сервере во время развертывания.





А)
Вы экономите сетевые накладные расходы на передачу каталога .git, который может быть довольно большим в зависимости от того, сколько истории и объектов нет в текущем HEAD.
Если вы когда-либо хотели иметь реальный репозиторий git на удаленном конце, вам лучше перейти в реальный репозиторий и изменить только дельты.
Я бы сказал на самом деле
rsync -avP /local/repo/* server:/remote/repo
Это работает до тех пор, пока это нормально для пропустить все точечные файлы в репо, а не только для .git. Если вы хотите пропустить Только.git, вам понадобится опция -f и страница руководства.
Обожаю rsync. Отлично работает, и в большинстве случаев вы можете использовать его так же, как scp!
Сначала я начал использовать архивную версию git, но понял, что в ней отсутствуют подмодули git. Поэтому использование rsync - отличный вариант, о котором я не думал. Спасибо Отто (кстати, отличное имя) и Норману!
Ни один!
Лучший способ сделать это:
git fetch ваш кеш--no-checkout)Когда вы делаете локальный клон, Git использует жесткие ссылки. Это означает, что до тех пор, пока вы не измените файл, чего вы не будете делать, у вас может быть 1000 развертываний и использовать (виртуально) только то пространство, которое вам понадобится для одного. Этот способ также значительно ускоряет архивирование или rsync.
Не могу редактировать, но в конце первого предложения есть опечатка. Предположительно, следует читать «что лучше сделать».