如果我有一个 git 存储库的克隆作为远程服务器上的缓存副本用于 capistrano/vlad 样式部署,那么最好执行 A)

git archive --format=tar origin/master | (cd #{destination} && tar xf -)

或 B)

cp -R cached-copy #{destination} && rm -Rf #{destination}/.git

澄清一下,存储库已经位于远程服务器上,我只想在部署期间将特定版本复制到同一服务器上的发布目录。

有帮助吗?

解决方案

其实我说

rsync -avP /local/repo/* server:/remote/repo

这工作,只要它是确定为跳过所有的点文件在回购,不仅.git。如果你想跳过的只有.git那么你需要的-f选项和手册页。

我爱 rsync的。伟大工程,大部分时候,你可以使用它,就像你使用scp!

其他提示

<强> A)

您节省传输.git目录的网络开销,这有可能是相当大的取决于有多少历史和当前HEAD对象没有。

如果你曾经想对远端实际的Git仓库,你最好推到一个真正的仓库,只需要改变增量。

两者都不!

更好的方法是:

  • git fetch 你的缓存
  • 将缓存克隆到当前目录(使用 --no-checkout 选项已启用)
  • 检查你想要的提交。

当您进行本地克隆时,Git 使用硬链接。这意味着,除非您修改文件(您不会这样做),否则您可以进行 1,000 个部署,并且(实际上)仅使用一个部署所需的空间。这种方式归档或 rsync 的速度也快得多。

也有人可能已经写你的代码你。

vigetlab的capistrano_rsync_with_remote_cache

我用这个与颠覆,它很适合我。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top