代码之家  ›  专栏  ›  技术社区  ›  ottobar

Git存档与CP-R

  •  4
  • ottobar  · 技术社区  · 16 年前

    如果我在远程服务器上有一个git存储库的克隆作为capistrano/vlad风格部署的缓存副本,那么最好做一个)

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

    或B)

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

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

    4 回复  |  直到 7 年前
        1
  •  8
  •   Norman Ramsey    16 年前

    我想说事实上

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

    只要可以,这个就行 跳过所有点文件 在回购协议中,不仅 .git . 如果你想跳过 只有 Git 那你就需要 -f 选项和手册页。

    我爱 rsync . 效果很好,大多数时候你可以像使用scp一样使用它!

        2
  •  3
  •   Otto    16 年前

    a)

    您可以节省传输.git目录的网络开销,根据当前头中没有多少历史记录和对象,可能会非常大。

    如果您曾经想要在远程端拥有一个实际的Git存储库,那么最好是推到一个真正的存储库,只需要更改delta。

        3
  •  3
  •   Chris Lloyd    16 年前

    都不!

    更好的方法是:

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

    当您执行本地克隆时,git使用硬链接。这意味着,在您修改一个文件之前,您可以有1000个部署,并且(实际上)只使用一个所需的空间。这种方式也大大加快了归档或rsync的速度。

        4
  •  2
  •   Otto    16 年前

    也可能有人已经为您编写了代码。

    vigetlab's capistrano_rsync_with_remote_cache

    我用这个来颠覆,它对我很有效。

    推荐文章