我如何针对特定的提交SHA与capistrano部署

我想知道如何使用Capistrano在Git中针对特定的提交SHA进行部署? 应该是这样的

cap deploy --version=<sha targeted> 

经过大量的search后,似乎无法find答案。

对于Capistrano 2.9至3.0:

 cap -S revision=80655da8d80aaaf92ce5357e7828dc09adb00993 deploy 

对于老版本的Capistrano ,你可以通过这样来部署一个特定的git commit / tree / branch /标签:

 cap -s branch=80655da8d80aaaf92ce5357e7828dc09adb00993 deploy 

在某些情况下,也可能需要指定环境作为参数。 production只是一个例子。

 cap production -S revision=80655da8d80aaaf92ce5357e7828dc09adb00993 deploy 

molf的回答对我来说并不奏效(使用capistrano 2.11.2)。 我不得不使用“修改”而不是分支,如下所示:

 cap -S revision=80655da8d80aaaf92ce5357e7828dc09adb00993 deploy 

卡皮斯特拉诺3

在你的deploy.rb或stage-specific文件中,比如config/deploy/production.rb

 set :branch, ENV.fetch('REVISION', 'master') 

这允许你指向一个特定的git修订版本。 它接受一个SHA,但也可以parsing为一个真正的修订(例如git标签,注释标签或分支)。

通过设置REVISION环境variables在命令行上使用它,例如

 bundle exec cap production deploy REVISION=80655da8d80aaaf92ce5357e7828dc09adb00993 bundle exec cap staging deploy REVISION=my-topic-branch 

问:分支,“主”

提示input,但如果您按回车则默认为“主”。