Ответ 1
В соответствии с этот последний поток, capistrano должен иметь возможность инициализировать и обновлять ваши подмодули:
set :git_enable_submodules,1
в config/deploy.rb должно быть достаточно, если ваши записи .gitmodules
обновлены.
Возможно, вам понадобится для исправления 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"
Драгоценный камень позаботится обо всем остальном автоматически.
Вы можете удалить:git_enable_submodules
из своей конфигурации, камень не обращает на это внимания - если вы требуете этого, вы уже говорите, что хотите включить подмодули.И еще одна деталь, на которую нужно обратить внимание - на данный момент поддерживается только стратегия удаленного кеша. Это означает, что вы ДОЛЖНЫ добавить к вашей
config
следующую строку:
set :deploy_via, :remote_cache
Он позволяет удаленному кешу и его действительно тому, что вы хотите сделать в любом случае - развертывание больших кодовых баз с большим количеством подмодулей и других вещей действительно является неприятным опытом, если у вас нет серверного кеша.