git arquivar vs cp -R
-
22-08-2019 - |
Pergunta
Se eu tiver um clone de um repositório git como uma cópia em cache em um servidor remoto para implantação Capistrano / style Vlad, é melhor fazê-A)
git archive --format=tar origin/master | (cd #{destination} && tar xf -)
ou B)
cp -R cached-copy #{destination} && rm -Rf #{destination}/.git
Para esclarecer, o repositório já está no servidor remoto, e eu só quero para copiar uma versão específica para um diretório lançamentos no mesmo servidor durante a implantação.
Solução
Eu diria que realmente
rsync -avP /local/repo/* server:/remote/repo
Isso funciona, desde que ele está ok para ignorar todos os arquivos de ponto no repo, não só .git
. Se você quiser pular única .git
então você vai precisar a opção -f
e a página do manual.
Eu amo rsync . Funciona muito bem e na maioria das vezes você pode usá-lo apenas como você poderia usar scp!
Outras dicas
A)
Você economiza a sobrecarga de rede de transferir o diretório .git, que poderia ser muito grande, dependendo de quanto a história e não objetos no HEAD atual.
Se você sempre quis ter um repositório git real na extremidade remota é melhor empurrando para um repositório único e verdadeiro ter que mudar os deltas.
Nenhum!
A melhor maneira de fazer isto é:
-
git fetch
seu cache - Clone o cache para o diretório atual (com as opções
--no-checkout
ativado) - Checkout a cometer quiser.
Quando você faz um clone local de Git usa hardlinks. Isso significa que, até que você modificar um arquivo, que você não vai, você pode ter 1.000 implantações e utilização (quase) apenas o espaço que você precisa para um. Desta forma, também é muito mais rápido arquivamento ou rsync.
Também alguém pode já ter escrito o seu código para você.
de vigetlab capistrano_rsync_with_remote_cache
Eu uso isso com o Subversion e funciona bem para mim.