0
我想添加一個鉤子,記錄一些事情的效果,「嘿,我即將部署這樣的提交。」喜歡的東西:提交將要部署的修訂版本的散列?
before "deploy:update_code" do
logger.info "Deploying #{revision}"
end
除非在本文中,「版本」似乎產生REF名字(即,「主」),而不是一個提交ID。我可以使用什麼構造來獲取sha1?
我想添加一個鉤子,記錄一些事情的效果,「嘿,我即將部署這樣的提交。」喜歡的東西:提交將要部署的修訂版本的散列?
before "deploy:update_code" do
logger.info "Deploying #{revision}"
end
除非在本文中,「版本」似乎產生REF名字(即,「主」),而不是一個提交ID。我可以使用什麼構造來獲取sha1?
爲了得到裁判,你需要掏出來的Git:
下面是我自己的項目,其中master
完全處於最新推,我clean_architecture
分支ISN的一個例子「T。
~/api git:(clean_architecture) $ git show-ref master
349dabbffec0713ac0fc70cf991dbaff6412ad2b refs/heads/master
349dabbffec0713ac0fc70cf991dbaff6412ad2b refs/remotes/origin/master
~/api git:(clean_architecture) $ git show-ref clean_architecture
14afae560ace128a13336ca01ff2391b678fadaf refs/heads/clean_architecture
bc78906ad0b2814dbc6225b2e14155b66eedffd0 refs/remotes/origin/clean_architecture
考慮的是板載,我建議像下面這樣搶遠程推裁判哈希(因爲這是唯一一個Capistrano的3可以看出,Capistrano的會做這樣的檢查在內部,但你不能訪問裁判,並會抱怨,如果這兩個值不同,反正)
首先,在命令行:
$ git show-ref clean_architecture | tail -1 | cut -f1 -d ' '
bc78906ad0b2814dbc6225b2e14155b66eedffd0
$ git show-ref clean_architecture | tail -1 | awk '{print $1}'
bc78906ad0b2814dbc6225b2e14155b66eedffd0
(有大約一百萬的方式做到這一點在Linux上)
其次在Ruby中:
$ irb --simple-prompt
>> `git show-ref #{fetch(:branch)}`
=> "349dabbffec0713ac0fc70cf991dbaff6412ad2b refs/heads/master\n349dabbffec0713ac0fc70cf991dbaff6412ad2b refs/remotes/origin/master\n"
這讓我們知道我們可以在Ruby中的土地確實容易裂開這件事,而不是需要cut
或awk
:
$ irb --simple-prompt
>> `git show-ref #{fetch(:branch)}`.split.first
這應該是八九不離十,漂亮(如cut
和awk
,並在管道中拆分,在Windows中等是相當* nix特定的,並且不太可能在Windows上正常工作)
Drop tha t在你的before
任務中,你應該設置。
謝謝,我喜歡它。我還發現了一個名爲「real_revision」的預定義變量(在Capistrano 2.5.17中),似乎可以做到這一點。有沒有理由不使用它? – gcbenison