如果我将git存储库的克隆作为远程服务器上用于capistrano / vlad样式部署的缓存副本,那么做A更好吗
git archive --format=tar origin/master | (cd #{destination} && tar xf -)
或B)
cp -R cached-copy #{destination} && rm -Rf #{destination}/.git
为了澄清,存储库已经在远程服务器上,我只想在部署期间将特定版本复制到同一服务器上的版本目录。
答案 0 :(得分:8)
我实际上说
rsync -avP /local/repo/* server:/remote/repo
只要可以.git
,这是有效的。如果您只想跳过 .git
,那么您需要-f
选项和手册页。
我爱rsync。效果很好,大多数时候你可以像使用scp一样使用它!
答案 1 :(得分:3)
<强> A)强>
您可以节省传输.git目录的网络开销,这可能会非常大,具体取决于当前HEAD中没有多少历史记录和对象。
如果您想在远程端拥有一个实际的git存储库,那么最好不要推送到真正的存储库而只需要更改增量。
答案 2 :(得分:3)
<强>既不!强>
更好的方法是:
git fetch
您的缓存--no-checkout
选项)当你做本地克隆时,Git使用硬链接。这意味着,在您修改文件之前,您可以进行1,000次部署,并且(几乎)仅使用您需要的空间。这种方式也可以更快地存档或rsync。
答案 3 :(得分:2)