【发布时间】:2010-12-29 10:33:02
【问题描述】:
我搜索了所有相关的 Capistrano 问题,但找不到任何可以解释的内容。
git version 1.6.4.2
Capistrano v2.5.10
基本上,当我运行我的 cap deploy.rb 脚本时,它会连接到服务器,开始执行 deploy:update 任务,然后在 deploy:update_code 任务中:
*** [deploy:update_code] rolling back
* executing "rm -rf /home/user_name/public_html/project_name/releases/20091223094358; true"
servers: ["project_name.com"]
它失败并出现以下错误:
/Library/Ruby/Gems/1.8/gems/capistrano-2.5.10/lib/capistrano/recipes/deploy/scm/git.rb:231:in `query_revision': Unable to resolve revision for 'master' on repository 'ssh://git@slice_ip:path_to_git_repository'. (RuntimeError)
这是我的部署脚本,我尝试过包含和省略:
设置:分支'主'
我也只是认为我的存储库路径已关闭,但我已经尝试了几乎所有排列(绝对的,不是绝对的,.git 后缀,没有后缀)。在我指向的路径上肯定有一个裸露的 git 存储库。
**我确实有多个项目托管在一个切片上。其他项目也是一个 Rails 项目,但运行的是 SVN。 Capistrano 部署工作正常。
如果我无法弄清楚这一点,任何指向正确方向的指示或任何想法都将有助于减少我计划做的饮酒量。 (路径/IP被混淆了,兄弟别黑我!)
set :application, "project1"
set :user, "username"
set :repository, "ssh://git@67.24.9.133/home/git/project1.git"
set :branch, "master"
set :port, 696969
set :deploy_to, "/home/username/public_html/#{application}"
set :scm, :git
role :app, application
role :web, application
role :db, application, :primary => true
# deployment via remote client (workstation)
set :deploy_via, :copy
set :runner, user
# mod_rails
namespace :deploy do
desc "Restarting mod_rails with restart.txt"
task :restart, :roles => :app, :except => { :no_release => true } do
run "touch #{current_path}/tmp/restart.txt"
end
[:start, :stop].each do |t|
desc "#{t} task is a no-op with mod_rails"
task t, :roles => :app do ; end
end
end
这是最相关的帖子(甚至非常相关),但我无法真正弄清楚他们所说的修复是什么。我对 git / capistrano 配置很陌生。
【问题讨论】:
标签: ruby-on-rails git deployment ssh capistrano