This plugin allows your Capistrano to deploy git repositories those have multiple-level nested submodules in them.

By default Capistrano issues git submodule init && git submodule update commands only at the repository root, those initializion first-level submodules. But if those submodules has their own submodules, your application will fail as they will stay uninitialized. This plugin fixes it and automatically checks for all included submodules (and their submodules, and their, etc) and initializes them, too.

Usage is very simple - just install this gem and add following requirement to your deployment scenario:

require ‘capistrano/deepmodules’

Also make sure that you’re using remote cache to deploy your code as current only remote cache strategy is supported:

set :deploy_via, :remote_cache

I see no reason not to use it, especially on large codebases with a lot of submodules, so currently this plugin does not support other strategies. If you need such support - drop me a note and I’ll if it’s plausible.

And you don’t need to set :git_enable_submodules parameter in your scenario - it doesn’t affect operations if this plugin as it pays no attention to it. If you want to disable submodules - just comment out ‘require’ line.