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

时间:2009-09-21 19:11:51

标签: ruby-on-rails git capistrano

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

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

set :repository, "myserver.com/git/#{application}.git"
set :scm, "git"
set :deploy_via, :copy

2 个答案:

答案 0 :(得分:16)

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

set :repository, "someuser@somehost:/home/myproject"
set :scm, "git"
set :deploy_via, :copy

有更多关于如何在lib/capistrano/recipes/deploy/scm/git.rb下的Capistrano宝石中设置git部署的示例。

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

答案 1 :(得分:0)

你有没有试过像

这样的东西
set :repository, "myserver.com/git/#{application}"
set :scm, :none
set :deploy_via, :copy

我从来没有试过这个,但这似乎是你需要使用的那种方法。更多关于Capistrano RDocs的见解。