2013-08-07 34 views
2

我經常通過Git將Rails構建到Heroku。對於那些不熟悉的人,代碼被推送到Heroku git push,並且預接收鉤在驗證接收之前編譯整個事情。一種不等待Heroku編譯/ Git預接收鉤完成的方法

事情是,等待編譯總是很長(通常對我來說是2分鐘),並且當一個人推動並重新推進很多小的改變時總結出來。兩分鐘可以變成十五分,而我被剝奪了我的外殼。

有沒有一種方法不必等待編譯/掛鉤完成以獲取我的shell後仍然得到反饋,例如。如果失敗了?

我知道暫停(^Z)命令,但我不確定是否會阻止進程/阻止反饋。

+0

打開兩個外殼怎麼樣?另外,你是否使用Heroku進行部署***和***源代碼控制?是否有可能僅僅使用GitHub來託管遠程回購,並且只使用Heroku進行部署? – 2013-08-07 21:13:19

+0

@cupcake打開兩個shell可以工作(; o]),但有時候我會忘記使用* right * shell而必須等待。不,我的使用案例不僅使用Heroku,還使用Github進行託管。不過,我並不覺得這是真的有意義,因爲我仍然需要將更改推向Heroku。 –

回答

0

可能有更好的heroku特定解決方案,但您可以嘗試git push &。看到這個人(10秒和打印「foo」的到stdout命令等待):

$ sleep 10 && echo -e "\nfoo" & 
[1] 4844 
echo "doing my thing" 
doing my thing 
$ 
foo 
echo "keep doing my thing" 
keep doing my thing 
[1]+ Done     sleep 10 && echo -e "\nfoo" 
+0

我想過這個,但是鉤子的輸出會「視覺中斷」。 –

1

我想,如果預接收鉤失敗,它與一個退出代碼退出。這可能意味着git push本身存在一個非零退出代碼。

如果是這樣的話,可以運行一個小包裝器:git push,將所有輸出重定向到一個文件,完成後檢查退出代碼。如果成功,不管你喜歡什麼,都要通知你自己(電子郵件?嗶聲?)。如果失敗 - 相同,並且您可以檢查臨時文件中的輸出。

你可以運行「在後臺」的包裝:git_push_wrapper.sh mybranch &

如果你真的想你也可以「分離」腳本本身(守護進程吧)內,所以你可以不&運行,並沒有得到[1] 4844[1]+ Done