Nach this recent thread sollte Capistrano Lage sein, Ihre Submodule init und aktualisieren:
set :git_enable_submodules,1
in config/deploy.rb genug sein sollte, wenn Ihr .gitmodules
Einträge auf dem neuesten Stand sind.
Sie müssen möglicherweise to patch Capistrano (lib/capistano/recipes/deploy/scm/git.rb
), um sicherzustellen, dass Ihre Submodule obwohl einbezogen werden.
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
Wenn Sie nested submodules haben, müssen Sie:
gem sources -a http://gems.github.com
$ sudo gem install morhekil-capistrano-deepmodules
benötigen Sie es einfach bei der Bereitstellung config:
require 'Capistrano/deepmodules'
Der Edelstein kümmert sich automatisch um den Rest.
Sie können :git_enable_submodules
aus Ihrer Konfig löschen, das Juwel beachtet es nicht - wenn Sie es benötigen, sagen Sie bereits, dass Sie Submodule aktivieren möchten.
Und ein weiteres Detail zu beachten - im Moment nur Remote-Cache-Strategie wird durch den Edelstein unterstützt. Es bedeutet, dass Sie Ihre config
die folgende Zeile hinzufügen:
set :deploy_via, :remote_cache
Es ermöglicht die Remote-Cache und es ist wirklich das, was Sie ohnehin tun wollen - großen Codebases mit vielen Submodule Bereitstellung und andere Zeug ist wirklich eine lästige Erfahrung, wenn Sie keinen serverseitigen Cache davon haben.