开发者

Capistrano Deploy fails with git: 'info' is not a git command

开发者 https://www.devze.com 2023-03-13 19:10 出处:网络
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

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 git and svn is right. It was thinking it was an svn repo, but since you changed the scm_command alone to git, it was trying git info. scm_command I think has to be used only when the scm command is not on path.


info is not a git subcommand like it says.

git: 'info' is not a git command. See 'git --help'.

Did you mean one of these?
    init
    mailinfo

clearly, git is installed and fine, but info is not a git command. ( But svn has it, any confusion between git and svn? )


Try installing git-info?


Following the previous reply:

which git-info 

/usr/bin/git-info

rpm -qf /usr/bin/git-info 

git-extras-4.1.0-1.fc23.noarch

we need install git-extras at least in Fedora Linux

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号