使用带有远程git repo的capistrano进行部署,但没有在生产服务器上运行git

Ers*_*yan 9 git capistrano ruby-on-rails

我有一个远程git存储库设置,用于在我的团队中进行集中开发.但是,我们部署应用程序的生产服务器当前没有运行git.我们想使用capistrano来部署我们的应用程序如何在部署时如何设置部署配方以从远程git存储库中"拉出"?

换句话说,我可以这样做吗?

set :repository, "myserver.com/git/#{application}.git"
set :scm, "git"
set :deploy_via, :copy
Run Code Online (Sandbox Code Playgroud)

Emi*_*ily 16

您问题中的解决方案接近正确.但是,您需要以不同的方式指定您的git存储库.你需要的是:

set :repository, "someuser@somehost:/home/myproject"
set :scm, "git"
set :deploy_via, :copy
Run Code Online (Sandbox Code Playgroud)

还有更多如何在你的Capistrano宝石中设置git部署的例子lib/capistrano/recipes/deploy/scm/git.rb.

使用copy部署策略时会发生的事情是Capistrano将您的git repo克隆到/tmp本地计算机上,将结果分解并压缩,然后通过sftp将其传输到服务器.复制策略也支持通过scp进行复制,但是如果不在源代码中进行黑客攻击,就没有办法告诉它这样做.