大家好。 在這篇文章中,我將分享我創建的一個Git預提交鈎子,用於協助代碼美化工作。 在Linux系統中,我使用兩種不同的編碼風格:用户空間風格和內核風格。 Linux內核有一套非常具體的編碼規範,每一個提交到內核的補丁都必須遵守該規範。 Linux內核提供了一個非常簡潔的腳本,名為 checkpatch.pl,可以用來檢查你的補丁是否符合內核風格。它也可以處理完整的文件。

通常,在我準備向上遊推送補丁之前,我會運行checkpatch腳本並修復所有錯誤(好吧,並不是所有錯誤,比如80列限制?真的有必要嗎?)。 但是,我們能不能自動化這個過程呢?答案是肯定的,這時Git鈎子就來幫忙了。 Git提供了在特定工作流階段(如提交前或提交後)運行腳本的選項。 例如,如果你使用過Gerrit,你可能用過Gerrit提供的 commit-msg 鈎子來生成嵌入到提交消息中的唯一Change-Id令牌。

在此情境下,一個特別有趣的鈎子是 pre-commit 鈎子。顧名思義,這個腳本在Git執行提交操作之前運行,並且可以訪問Git對象。 我寫的這個鈎子,基本上會對提交中包含的所有文件運行,並對每個文件執行 astyle(Artistic Style)。 astyle 是一個非常棒的命令行工具,可在多種平台上運行。它根據一系列描述如何調整間距、縮進和其他各種美化事項的規則來工作。 然後,它會用修正後的風格重寫原始文件。

你可以在Github上獲取這個鈎子。 歡迎隨時fork並改進它。

可能的改進方向: 目前,astyle 作用於完整的對象(文件)。我更希望它只作用於提交中包含的差異部分。 更多精彩內容 請關注我的個人公眾號 公眾號(辦公AI智能小助手) 對安全感興趣的朋友可以關注我的安全公眾號(網絡安全技術點滴分享)