gpt4 book ai didi

ruby-on-rails - Capistrano 无法从非主分支部署

转载 作者:数据小太阳 更新时间:2023-10-29 07:58:45 25 4
gpt4 key购买 nike

我正在使用 Capistrano (3.7.1) 将我的 Rails 5 应用程序部署到 VPS。我在 git 中使用了 2 个主要分支:master,用于稳定的、生产就绪的代码,以及 develop,用于 WIP 代码。我想将 develop 分支部署到临时服务器,但它似乎不起作用。

deploy.rb中:

# This is the failing task
task :check_revision do
on roles(:app) do
unless 'git rev-parse HEAD' == "git rev-parse origin/#{fetch(:branch)}"
puts "WARNING: HEAD is not the same as origin/#{fetch(:branch)}"
puts 'Run `git push` to sync changes.'
exit
end
end
end

production.rb中:

set :branch, 'master'

staging.rb中:

set :branch, 'develop'

每次尝试部署都失败,如下:

$ cap staging deploy
... initial steps, skipped over ...
WARNING: HEAD is not the same as origin/develop
Run `git push` to sync changes.

但这显然不是这种情况,因为我得到:

$ git rev-parse HEAD
38e4a194271780246391cf3977352cb7cb13fc86
$ git rev-parse origin/develop
38e4a194271780246391cf3977352cb7cb13fc86

这显然是一样的。

这是怎么回事?

最佳答案

您正在编写应该在 shell 上用单引号引起来的命令,ruby 将其视为 String:

unless 'git rev-parse HEAD' == 'git rev-parse origin/#{fetch(:branch)}'

而不是这个:

unless `git rev-parse HEAD` == `git rev-parse origin/#{fetch(:branch)}`

你也可以使用:

unless %x{git rev-parse HEAD} == %x{git rev-parse origin/#{fetch(:branch)}}

%x 还返回在子 shell 中运行 cmd 的标准输出。

关于ruby-on-rails - Capistrano 无法从非主分支部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41545299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com