Git Hooks
如同其他許多的版本控制系統(tǒng)一樣,Git 也具有在特定事件發(fā)生之前或之后執(zhí)行特定腳本代碼功能(從概念上類比,就與監(jiān)聽(tīng)事件、觸發(fā)器之類的東西類似)。Git Hooks 就是那些在Git執(zhí)行特定事件(如commit、push、receive等)后觸發(fā)運(yùn)行的腳本。
至于怎么執(zhí)行哪些腳本文件,又是在何時(shí)觸發(fā)這些腳本文件的,請(qǐng)參考這篇博文,里面寫的很詳細(xì)
Clang Format
Clang Format 是一個(gè)xcode可以安裝的插件,但是,在xcode9以后就已經(jīng)無(wú)法使用了,現(xiàn)在你可以使用XcodeClangFormat,不過(guò)這個(gè)不能像之前一樣在保存的時(shí)候自動(dòng)格式化。也是,使用Git Hooks + Spacecommander 的方式可以實(shí)現(xiàn)讓你的git 倉(cāng)庫(kù)規(guī)范起來(lái)。
操作步驟
step1:cd project// 到你的項(xiàng)目根目錄
step2:git clone https://github.com/square/spacecommander.git
step3: 執(zhí)行:/Users/xavior/desktop/HooksDemo/spacecommander/setup-repo.sh
你可以看到項(xiàng)目目錄下的 .git/hooks 目錄中生成一個(gè) pre-commit 文件(可執(zhí)行鉤子文件)
同時(shí)在項(xiàng)目目錄下生成了一個(gè) .clang-format 文件,其中 .clang-format 只是一個(gè)文件鏈接,指向了我們的 spacecommander 倉(cāng)庫(kù)中的這個(gè)文件,這個(gè)文件主要用來(lái)配置規(guī)范的選項(xiàng)。最重要的一個(gè)文件是 .git 隱藏文件夾下的 hook文件夾中的 pre-commit 腳本,這個(gè)腳本會(huì)在 git commit 之前執(zhí)行用來(lái)檢測(cè)代碼是否符合規(guī)范。
OK,操作完成。接下來(lái)測(cè)試一下。
隨便寫幾行代碼

git add .
git commit -m '...'
你會(huì)看到如下的輸出信息:

格式有問(wèn)題,提交失敗,按照他的要去,格式化相關(guān)文件
"/Users/xavior/desktop/HooksDemo/spacecommander"/format-objc-file.sh 'HooksDemo/ViewController.m'
打開(kāi)項(xiàng)目:

可以看到已經(jīng)完成格式化了,再進(jìn)行提交。

提交成功。
demo地址希望對(duì)你有所幫助。