2009-09-21 14 views
9

上で実行しなくても、私は私のチーム内での集中開発のためのリモートのgitリポジトリを設定しています。ただし、現在、アプリケーションを配備しているプロダクションサーバーにはgitが実行されていません。 capistranoを使ってアプリケーションを配備する配備時にリモートのgitリポジトリから「プル」するように配備レシピを設定するにはどうすればよいですか?言い換えればは、リモートのgitレポカピストラーノと展開が、Gitは本番サーバ

私はこのような何かを行うことができますか?

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

答えて

16

あなたの問題の解決策を補正することがあります。しかし、gitリポジトリを少し違って指定する必要があります。何が必要です:

set :repository, "[email protected]:/home/myproject" 
set :scm, "git" 
set :deploy_via, :copy 

lib/capistrano/recipes/deploy/scm/git.rbの下であなたのカピストラーノ宝石でGitの展開を設定する方法のより多くの例があります。あなたはcopy展開戦略を使用するとどうなり

はカピストラーノは、ローカルマシン上の/tmpにあなたのgitリポジトリを複製していることで、タール&は結果をジッパー、その後、SFTP経由でサーバに転送します。コピー戦略はscp経由でのコピーもサポートしていますが、ソースで少しハッキングすることなくそれを行うように指示する方法はありません。

0

は、あなたが私はこれを試したことがありません

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

のようなものを試してみましたが、これはあなたが使用してついて行く必要があるだろうなアプローチの一種のようです。 Capistrano RDocsのもう少し洞察力。

+0

私はこれをエコーし​​ます。 Using:copyは、あなたのサーバーにgitクライアントをインストールしない限り、唯一のオプションです。 –

+0

'scm'をnoneに設定すると、ローカルマシン上のものをコピーして、ローカルにgitクローンを作成して転送するのではなく、サーバに転送します。 – Emily

+3

実際、セカンドルックでは、それは失敗します。 'scm'をnoneに設定すると、' repository'はURLではなくディレクトリパスであると予想されます。あなたの解決策は、ローカルマシン上のディレクトリmyserver.comを探します。通常、 'scm'がnoneの場合、' repository 'を ''' 'に設定します。 – Emily

関連する問題