Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Merge pull request #105 from nilbus/git-submodule-recursive

Check for Git submodule `--recursive` support.
  • Loading branch information...
commit ad17ec936021f4f1dab6b74eddaee388081712b0 2 parents fa99143 + a50a4fc
@leehambley leehambley authored
View
6 lib/capistrano/recipes/deploy/scm/git.rb
@@ -151,7 +151,8 @@ def checkout(revision, destination)
if false == variable(:git_submodules_recursive)
execute << "#{git} submodule #{verbose} update --init"
else
- execute << "#{git} submodule #{verbose} update --init --recursive"
+ execute << %Q(export GIT_RECURSIVE=$([ ! "`#{git} --version`" \\< "git version 1.6.5" ] && echo --recursive))
+ execute << "#{git} submodule #{verbose} update --init $GIT_RECURSIVE"
end
end
@@ -194,7 +195,8 @@ def sync(revision, destination)
if false == variable(:git_submodules_recursive)
execute << "#{git} submodule #{verbose} update --init"
else
- execute << "#{git} submodule #{verbose} update --init --recursive"
+ execute << %Q(export GIT_RECURSIVE=$([ ! "`#{git} --version`" \\< "git version 1.6.5" ] && echo --recursive))
+ execute << "#{git} submodule #{verbose} update --init $GIT_RECURSIVE"
end
end
View
6 test/deploy/scm/git_test.rb
@@ -40,7 +40,7 @@ def test_checkout
# with submodules
@config[:git_enable_submodules] = true
- assert_equal "#{git} clone -q git@somehost.com:project.git /var/www && cd /var/www && #{git} checkout -q -b deploy #{rev} && #{git} submodule -q init && #{git} submodule -q sync && #{git} submodule -q update --init --recursive", @source.checkout(rev, dest).gsub(/\s+/, ' ')
+ assert_equal "#{git} clone -q git@somehost.com:project.git /var/www && cd /var/www && #{git} checkout -q -b deploy #{rev} && #{git} submodule -q init && #{git} submodule -q sync && export GIT_RECURSIVE=$([ ! \"`#{git} --version`\" \\< \"git version 1.6.5\" ] && echo --recursive) && #{git} submodule -q update --init $GIT_RECURSIVE", @source.checkout(rev, dest).gsub(/\s+/, ' ')
end
def test_checkout_with_verbose_should_not_use_q_switch
@@ -118,7 +118,7 @@ def test_sync
# with submodules
@config[:git_enable_submodules] = true
- assert_equal "cd #{dest} && #{git} fetch -q origin && #{git} fetch --tags -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 --init --recursive && #{git} clean -q -d -x -f", @source.sync(rev, dest)
+ assert_equal "cd #{dest} && #{git} fetch -q origin && #{git} fetch --tags -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 && export GIT_RECURSIVE=$([ ! \"`#{git} --version`\" \\< \"git version 1.6.5\" ] && echo --recursive) && #{git} submodule -q update --init $GIT_RECURSIVE && #{git} clean -q -d -x -f", @source.sync(rev, dest)
end
def test_sync_with_remote
@@ -155,7 +155,7 @@ def test_remote_clone_with_submodules
@config[:git_enable_submodules] = true
dest = "/var/www"
rev = 'c2d9e79'
- assert_equal "git clone -q -o username git@somehost.com:project.git /var/www && cd /var/www && git checkout -q -b deploy #{rev} && git submodule -q init && git submodule -q sync && git submodule -q update --init --recursive", @source.checkout(rev, dest)
+ assert_equal "git clone -q -o username git@somehost.com:project.git /var/www && cd /var/www && git checkout -q -b deploy #{rev} && git submodule -q init && git submodule -q sync && export GIT_RECURSIVE=$([ ! \"`git --version`\" \\< \"git version 1.6.5\" ] && echo --recursive) && git submodule -q update --init $GIT_RECURSIVE", @source.checkout(rev, dest)
end
# Tests from base_test.rb, makin' sure we didn't break anything up there!
Please sign in to comment.
Something went wrong with that request. Please try again.