最近我在嘗試搭建一個利用Git直接部署生產代碼的服務器,查了許多資料,瞭解到須要用到Git Hooks這一特性,就順便看了一下。node
話說,如同其餘許多的版本控制系統同樣,Git也具備在特定事件發生以前或以後執行特定腳本代碼功能(從概念上類比,就與監聽事件、觸發器之類的東西相似)。Git Hooks就是那些在Git執行特定事件(如commit、push、receive等)後觸發運行的腳本。git
按照Git Hooks腳本所在的位置能夠分爲兩類:github
Git Hooks是定製化的腳本程序,因此它實現的功能與相應的git動做相關;在實際工做中,Git Hooks仍是相對比較萬能的。下面僅舉幾個簡單的例子:npm
更多的功能能夠按照生產環境的需求寫出來。segmentfault
每個Git repo下都包含有.git/hoooks
這個目錄(沒錯,本地和遠程都是這樣),這裏面就是放置Hooks的地方。你能夠在這個目錄下自由定製Hooks的功能,當觸發一些Git行爲時,相應地Hooks將被執行。服務器
這裏是一個Git Hooks列表,如今若是以爲不是很明白,不用擔憂,之後我會繼續講:app
圖中是我一個本地repo的git hooks示例。框架
好了,前面囉嗦一大堆,這裏纔是重點。工具
如圖中所示的文件,是由本地執行的腳本語言寫成的,儘管這些文件默認會是Shell Script
,你徹底能夠給它替換成本身喜歡的Ruby
,Python
或者Perl
。post
舉個例子,它是這個樣子的:
關於這些腳本文件的命名,細心的讀者就會發現圖中的文件都是上面Git行爲列表中列出的名稱加上後綴.sample
。沒錯就是這樣,把那些文件的後綴去掉,或者以列表中的名字直接命名,就會把該腳本綁定到特定的Git行爲上。
因此說,Git Hooks的正確操做方式是:寫腳本。
本篇完,第二篇在這裏。