diff --git a/CHANGELOG b/CHANGELOG index 6cfab66a..cc9b4fcb 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,7 @@ *unreleased* +* Make sure git fetches include tags [Alex Arnell] + * Make deploy:setup obey the :use_sudo and :runner directives, and generalize the :use_sudo and :runner options into a try_sudo() helper method [Jamis Buck] * Make sudo helper play nicely with complex command chains [Jamis Buck] diff --git a/lib/capistrano/recipes/deploy/scm/git.rb b/lib/capistrano/recipes/deploy/scm/git.rb index b7d7c6a6..987f1122 100644 --- a/lib/capistrano/recipes/deploy/scm/git.rb +++ b/lib/capistrano/recipes/deploy/scm/git.rb @@ -184,7 +184,7 @@ module Capistrano end # since we're in a local branch already, just reset to specified revision rather than merge - execute << "#{git} fetch #{remote} && #{git} reset --hard #{revision}" + execute << "#{git} fetch --tags #{remote} && #{git} reset --hard #{revision}" if configuration[:git_enable_submodules] execute << "#{git} submodule init" diff --git a/test/deploy/scm/git_test.rb b/test/deploy/scm/git_test.rb index 896233c0..55d96b52 100644 --- a/test/deploy/scm/git_test.rb +++ b/test/deploy/scm/git_test.rb @@ -66,12 +66,12 @@ class DeploySCMGitTest < Test::Unit::TestCase def test_sync dest = "/var/www" rev = 'c2d9e79' - assert_equal "cd #{dest} && git fetch origin && git reset --hard #{rev}", @source.sync(rev, dest) + assert_equal "cd #{dest} && git fetch --tags origin && git reset --hard #{rev}", @source.sync(rev, dest) # With :scm_command git = "/opt/local/bin/git" @config[:scm_command] = git - assert_equal "cd #{dest} && #{git} fetch origin && #{git} reset --hard #{rev}", @source.sync(rev, dest) + assert_equal "cd #{dest} && #{git} fetch --tags origin && #{git} reset --hard #{rev}", @source.sync(rev, dest) end def test_sync_with_remote @@ -83,7 +83,7 @@ class DeploySCMGitTest < Test::Unit::TestCase @config[:repository] = repository @config[:remote] = remote - assert_equal "cd #{dest} && git config remote.#{remote}.url #{repository} && git config remote.#{remote}.fetch +refs/heads/*:refs/remotes/#{remote}/* && git fetch #{remote} && git reset --hard #{rev}", @source.sync(rev, dest) + assert_equal "cd #{dest} && git config remote.#{remote}.url #{repository} && git config remote.#{remote}.fetch +refs/heads/*:refs/remotes/#{remote}/* && git fetch --tags #{remote} && git reset --hard #{rev}", @source.sync(rev, dest) end def test_shallow_clone