2008-12-17 32 views
4

如果我有一个Git仓库作为Capistrano的/弗拉德风格部署在远程服务器上缓存副本的克隆,是它更好地做到A)git的存档VS CP -R

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

或B)

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

为了澄清,该库已经在远程服务器上,我只是想在部署期间的特定版本复制到发布目录在同一台服务器上。

+0

我无法编辑,但第一句末尾有一个错字。它应该是“应该做的更好”,据推测。 – Otto 2008-12-17 04:54:49

+0

更正了错字...谢谢 – ottobar 2008-12-17 05:10:56

回答

8

我想说其实

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

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

我爱rsync。作品很棒,大多数时候你可以像使用scp一样使用它!

3

A)

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

如果你曾经想要在远程端拥有一个实际的git仓库,你最好把它推到一个真实的仓库,而只需要改变增量。

3

两者都不!

这样做的更好的方法是:

  • git fetch缓存
  • 克隆缓存到您的当前目录(与--no-checkout选项启用)
  • 结帐你想要的提交。

当你做一个本地克隆时,Git使用硬链接。这意味着,除非您修改文件,否则您可以进行1,000次部署,并且只使用(虚拟)只需要一个文件的空间。这种方式也是更快的归档或rsync。