I setup a new project with Capistrano and although i can successfully run cap deploy:setup if i try to deploy my project I get the error below
→ cap deploy
* executing `deploy'
* executing `deploy:update'
** transaction: start
* executing `deploy:update_code'
updating the cached checkout on all servers
executing locally: "git info git@github.com:foo/Baconalytics.git -rHEAD"
git: 'info' is not a git command. See 'git --help'.
Did you mean one of these?
init
mailinfo
*** [deploy:update_code] rolling back
I have several other projects that deploy fine from the same machine however this one will not. Git is installed on my host and target. Does anyone know troubleshooting steps I can take?
My deploy.rb file:
require "bundler/capistrano"
set :application, "baconalyitcs"
set :repository, "git@github.com:foo/Baconalytics.git"
set :scm_command, "git"
set :deploy_to, "/root/baconalytics"
set :branch, "master"
set :user, "root"
set :use_sudo, false
ssh_options[:forward_agent] = true
set :deploy_via, :remote_cache
set :ruby_prefix, "/usr/bin/ruby"
set :deploy_user, "#{ENV['USER']}"
role :worker, "xxx.compute-1.amazonaws.com", :primary => true
role :namenode, "xxx.compute-1.amazonaws.com"
after "deploy", "deploy:bundle_gems"
after "deploy", "deploy:print_success_banner"
namespace :deploy do
task :print_success_banner do
puts "---------------------------------------------------"
puts "--------------- DEPLOY SUCCEEDED ------------------"
puts "---------------------------------------------------"
end
task :bundle_gems, :roles => [:worker] do
run "rm -rf /mnt/app/current/vendor/cache; true"
run "if [ -f /mnt/app/current/Gemfile.lock ]; then rm /mnt/app/current/Gemfile.lock; fi;"
cmd = [
"cd #{current_path}",
"#{ruby_prefix}/bundle install",
].join(" && ")
run cmd
end
end
task :ssh do
role = ARGV[1]
servers = @roles[role.to_sym].servers rescue @roles[role.to_sym]
puts instances = `rake ec2:din` unless server
instances = instances.split("\n") unless server
system "ssh -o StrictHostKeyChecking=no root@#{(server || instances[ssh_server.to_i].split("\t")[2])}"
end
Update after posting the deploy.rb:
You have to use
set :scm, "git"so that it recognizes that you are using git. Hope that helps.Note, my initial statement on confusion between
gitandsvnis right. It was thinking it was an svn repo, but since you changed thescm_commandalone togit, it was tryinggit info.scm_commandI think has to be used only when the scm command is not on path.infois not a git subcommand like it says.clearly, git is installed and fine, but
infois not a git command. ( But svn has it, any confusion between git and svn? )