Git 提交規(guī)范

  1. 前言
    在提交commit信息時(shí),為了統(tǒng)一規(guī)范commit信息,可以在Git Hooks中編寫修改commit-msg腳本來先 實(shí)現(xiàn)自定義commit信息校驗(yàn)規(guī)則

  1. git hooks 所在路徑
    hooks腳本在git項(xiàng)目中的根目錄下的.git目錄,具體路徑為:.git/hooks/
    目錄內(nèi)容如下圖所示:


    圖1.png

  1. 修改腳本內(nèi)容
    本次為了校驗(yàn)commit信息是否符合提交規(guī)范,所以我們在commit-msg這個(gè)hook中編寫腳本內(nèi)容

    #! /usr/bin/env python
    # -*- encoding: utf-8 -*-
    import sys
    import re
    
    # 可以根據(jù)自己團(tuán)隊(duì)的需求來修改正則表達(dá)式
    pattern = re.compile(
    "^(feat|fix|polish|docs|style|refactor|perf|test|workflow|ci|chore|types)(\(.+\))?: .{1,50}")
    
    def validate_commit_msg(msg: str):   
        """ 
        校驗(yàn)git commit 內(nèi)容格式是否滿足要求    
        :param msg:    
        :return: void   
        """   
        if msg.startswith("Revert"):
            sys.exit(0)
        elif msg.startswith("Merge"):
            sys.exit(0)
        elif re.match(pattern, msg):
            sys.exit(0)    
        else:        
            print("invalid commit format")
            sys.exit(1)
    if __name__ == "__main__":   
        # 在commit-msg 這個(gè)hook運(yùn)行時(shí)會傳入一個(gè)保存commit信息的文件地址
        # 需要從這個(gè)文件中讀取提交信息
        file_name = sys.argv[1]
        print(file_name)    
        commit_msg = ""   
        with open(file_name, encoding="utf-8") as file:
            for line in file.readlines():
                commit_msg += line    
        validate_commit_msg(commit_msg)
    

  1. IDEA插件
    可以在Jetbrain中安裝Git Commit Template 插件配合使用


  2. 注意事項(xiàng)
    需要在環(huán)境變量中加入Python可執(zhí)行目錄,不然這個(gè)腳本會執(zhí)行失敗

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容