From a6b2a20afdc0b29e64440333d21948eec8b2ef89 Mon Sep 17 00:00:00 2001 From: Nolan Eakins Date: Wed, 13 May 2009 13:17:56 -0400 Subject: [PATCH] "Manually" syncing submodules in .git/config --- lib/capistrano/recipes/deploy/scm/git.rb | 3 ++- test/deploy/scm/git_test.rb | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/capistrano/recipes/deploy/scm/git.rb b/lib/capistrano/recipes/deploy/scm/git.rb index 0b6cdd84..f15b7122 100644 --- a/lib/capistrano/recipes/deploy/scm/git.rb +++ b/lib/capistrano/recipes/deploy/scm/git.rb @@ -189,7 +189,8 @@ module Capistrano if configuration[:git_enable_submodules] execute << "#{git} submodule #{verbose} init" - execute << "#{git} submodule sync" + execute << "for mod in `#{git} submodule status | awk '{ print $2 }'`; do #{git} config -f .git/config submodule.${mod}.url `#{git} config -f .gitmodules --get submodule.${mod}.url` && echo Synced $mod; done" + execute << "#{git} submodule #{verbose} sync" execute << "#{git} submodule #{verbose} update" end diff --git a/test/deploy/scm/git_test.rb b/test/deploy/scm/git_test.rb index b2f9788c..e818f398 100644 --- a/test/deploy/scm/git_test.rb +++ b/test/deploy/scm/git_test.rb @@ -98,6 +98,10 @@ class DeploySCMGitTest < Test::Unit::TestCase git = "/opt/local/bin/git" @config[:scm_command] = git assert_equal "cd #{dest} && #{git} fetch -q origin && #{git} reset -q --hard #{rev}", @source.sync(rev, dest) + + # with submodules + @config[:git_enable_submodules] = true + assert_equal "cd #{dest} && #{git} fetch -q origin && #{git} reset -q --hard #{rev} && #{git} submodule -q init && for mod in `#{git} submodule status | awk '{ print $2 }'`; do #{git} config -f .git/config submodule.${mod}.url `#{git} config -f .gitmodules --get submodule.${mod}.url` && echo Synced $mod; done && #{git} submodule -q sync && #{git} submodule -q update", @source.sync(rev, dest) end def test_sync_with_remote