- 前言
在提交commit信息時(shí),為了統(tǒng)一規(guī)范commit信息居凶,可以在Git Hooks中編寫修改commit-msg腳本來先 實(shí)現(xiàn)自定義commit信息校驗(yàn)規(guī)則
-
git hooks 所在路徑
hooks腳本在git項(xiàng)目中的根目錄下的.git目錄侠碧,具體路徑為:.git/hooks/
目錄內(nèi)容如下圖所示:
圖1.png
-
修改腳本內(nèi)容
本次為了校驗(yàn)commit信息是否符合提交規(guī)范,所以我們?cè)赾ommit-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í)會(huì)傳入一個(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)
-
IDEA插件
可以在Jetbrain中安裝Git Commit Template 插件配合使用
注意事項(xiàng)
需要在環(huán)境變量中加入Python可執(zhí)行目錄贸典,不然這個(gè)腳本會(huì)執(zhí)行失敗