この最近のスレッドによると、カピストラーノはサブモジュールを初期化および更新できるはずです。
set :git_enable_submodules,1
.gitmodules
エントリが最新であれば、config/deploy.rb で十分なはずです。ただし、サブモジュールが確実に含まれるように、Capistrano ( )
にパッチを適用
する必要がある場合があります。lib/capistano/recipes/deploy/scm/git.rb
def checkout(revision, destination)
git = command
branch = head
fail "No branch specified, use for example 'set :branch, \"origin/master\"' in your deploy.rb" unless branch
if depth = configuration[:git_shallow_clone]
execute = "#{git} clone --depth #{depth} #{configuration[:repository]} #{destination} && "
else
execute = "#{git} clone #{configuration[:repository]} #{destination} && "
end
execute += "cd #{destination} && #{git} checkout -b deploy #{branch}"
if submodules = configuration[:git_enable_submodules]
execute += " && git-submodule init &&"
execute += "git-submodule update"
end
execute
end
ネストされたサブモジュールがある場合は、次が必要です。
gem sources -a http://gems.github.com
$ sudo gem install morhekil-capistrano-deepmodules
展開構成でそれを要求するだけです:
「capistrano/deepmodules」が必要です
gem は残りのすべてを自動的に処理します。
構成から削除でき:git_enable_submodules
ます。宝石はそれに注意を払いません-必要な場合は、サブモジュールを有効にしたいとすでに言っています。
注意すべきもう 1 つの詳細 - 現時点では、gem でサポートされているのはリモート キャッシュ戦略のみです。config
これは、次の行に追加する必要があることを意味します。
set :deploy_via, :remote_cache
リモートキャッシュを有効にしますが、とにかくやりたいことです.サーバー側のキャッシュがない場合、多くのサブモジュールやその他のものを含む大きなコードベースを展開するのは本当に面倒です.