2016-11-29 67 views
1

我們假設我有一個post-merge腳本,該腳本也存儲在存儲庫中的其他位置。我想掛鉤升級到最新版本。git鉤子可以覆蓋自己嗎?

爲什麼?這背後的主要原因是鉤子腳本也可以通過單次推送進行部署,而無需訪問多臺服務器並在每臺服務器上手動部署代碼。鉤子腳本依賴於可能會改變的db模式。

在這種情況下,鎖在.git/hooks/post-merge,所以它不能被簡單的方式覆蓋。

如果我用另一種鉤來更新腳本,如pre-merge,它會成功,但pre-merge不知道最新的post-merge腳本但在這一點上,這將是一個承諾的背後。

這個問題的任何想法?

回答

1

好的。找到了可能的治療方法

在腳本結束時,打開一個將執行覆蓋作業的獨立進程。通過它的PID爲post-merge,所以它可以連續檢查腳本是否仍在運行。如果不是,則將腳本更新爲最新版本並退出。