2016-08-18 149 views
0

我在執行預推掛鉤時遇到問題。開發人員在將代碼推送到git倉庫之前需要運行一個靜態代碼分析器。但通常他們不會,因此打破了構建。如何執行客戶端Git鉤子?

因此,我寫了一個預推鉤子;這是一個執行靜態代碼分析(並複製到.git/hooks)目錄的shell腳本,但它不能正常工作。這必須是客戶端掛鉤,但它不按預期方式工作。我不希望在預提交或提交後掛鉤中實現此功能,因爲我希望在開發人員的計算機上執行靜態代碼分析,而不是在他/她推送代碼之前(而不是在他/她提交代碼時)。

因此,請提供您的見解,以瞭解如何在git push命令之前在客戶端計算機上執行任務(靜態代碼分析)。

+1

您是否已將.git/hooks/pre-push複製到希望執行此操作的所有客戶機上? – sestus

+0

是的。我也是這樣做的。 – vintrojan

+0

鉤子是否可執行('chmod a + x .git/hooks/pre-push')? – kba

回答

1

正如@sestus所說,掛鉤需要在客戶端進行設置,它們不是Git存儲庫的一部分。如果你認爲Git是一個分佈式系統並且鉤子可以執行任意代碼,這是有道理的。

您可以執行的操作是將腳本簽入存儲庫(例如到$REPO_ROOT/git-hooks/pre-push)並使用項目的構建工具鏈設置符號鏈接(ln -s ../../git-hooks/pre-push .git/hooks)。