2016-08-25 26 views
1

有一個服務器正在運行,並有一個git實例。我希望腳本每次運行時都會運行git推送到服務器。我想我的腳本被執行,然後git推繼續。 任何解決方法?每次git推後執行一個腳本

回答

2

我不知道如果你想要一個素文字之前運行推或之後。所以這是我的推前答案。但是如果你想要後推(即推後),你必須相應地更改pre-push掛鉤,以檢查是否推動成功,然後你可以做推後的事情。

至於建議的@Travis,git hooks是你要找的人。因此要執行腳本預推,您需要做的是在.git/hooks中創建一個pre-push文件。所以在這種情況下,把你的一堆代碼放入預發佈腳本文件.git/hooks/pre-push並保存。然後通過chmod +x .git/hooks/pre-push使其可執行。成功完成此操作後,每次運行push命令時都可以看到腳本被執行。

PS:請注意,我沒有測試過這整個但預計這種方式進行工作。

總之,假設你(Linux的用戶)是項目目錄

vim .git/hooks/pre-push # then add your code and save the file 
         # Also put the shebang on top to identify the interpreter 
chmod +x .git/hooks/pre-push # make it executable 
+0

音符觸發的操作:IMO,這適用於「前推」,但對於「推後」 –

+0

@ mchen.ja不起作用的後推只是改變腳本的名稱爲'後推' – MaNKuR

+0

什麼版本的git你能成功測試?我無法在git 2.14.2上運行(在macOS上運行)。 –

0

您已經標記了這個GitHub上,所以我假設你指的是公共GitHub上,而不是GitHub的企業。

您不能運行在GitHub上的服務器腳本「服務器端」,因爲這顯然是一個巨大的漏洞,但你可以建立一個web鉤來觸發另一臺服務器上的腳本。

基本上只要有人一推,一個特定的URL將有關Push發送的數據。然後你可以從這裏觸發一個腳本。有關Web掛鉤的更多信息,請參閱GitHub API docs

+0

如何在像dokku(docker)這樣的提供像heroku一樣的git界面的其他服務器上使用git。 ? –