Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # this include won't work for some reason:
- # include Capistrano::Git::DefaultStrategy
- module SubmoduleStrategy
- # check for a .git directory
- def test
- test! " [ -d #{repo_path}/.git ] "
- end
- # same as in Capistrano::Git::DefaultStrategy
- def check
- test! :git, :'ls-remote', repo_url
- end
- def clone
- git :clone, '-b', fetch(:branch), '--recursive', repo_url, repo_path
- end
- # same as in Capistrano::Git::DefaultStrategy
- def update
- git :remote, :update
- end
- # put the working tree in a release-branch,
- # make sure the submodules are up-to-date
- # and copy everything to the release path
- def release
- release_branch = fetch(:release_branch, File.basename(release_path))
- git :checkout, '-b', release_branch, fetch(:remote_branch, "origin/#{fetch(:branch)}")
- git :submodule, :update, '--init'
- context.execute "rsync -ar --exclude=.git\* #{repo_path}/ #{release_path}"
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement