我正在嘗試設定一個 git hook 來檢查分支名稱是否以某些單詞開頭,只有小寫字母并且是 15 個字符或更少。我讓它部分作業。正則運算式的“僅小寫”和“15 個字符或更少”部分有效。我無法讓正則運算式的“以特定單詞開頭”部分起作用。
這是我的 git hook pre-push 檔案內容:
#!/usr/bin/env bash
LC_ALL=C
local_branch="$(git rev-parse --abbrev-ref HEAD)"
valid_branch_regex="^(task|master|develop|qa|tb|bug|story)\/[a-z0-9._-]{2,15}$"
message="This branch violates the branch naming rules. Please rename your branch."
if [[ ! $local_branch =~ $valid_branch_regex ]]
then
echo "$message"
exit 1
fi
exit 0
我在本地創建了一個名為 task_7777 的新分支并運行git push. 分支名稱未通過正則運算式檢查,即使名稱以“任務”開頭。
我只想要以“task、master、develop、qa、tb、bug 或 story”開頭的分支名稱,并且只允許小寫字母、數字、破折號和下劃線,并且包含 15 個或更少的字符。我嘗試按照這篇文章中的示例建模我的代碼:https : //itnext.io/using-git-hooks-to-enforce-branch-naming-policy-ffd81fa01e5e
如何讓正則運算式的“以特定單詞開頭”部分起作用?
uj5u.com熱心網友回復:
首先,您需要將正則運算式更改為不需要/after 關鍵字:
^(task|master|develop|qa|tb|bug|story)[a-z0-9._-]{2,15}$
然后你仍然有你的長度限制只限制關鍵字后面的部分的問題,這可能不是你想要的。要解決此問題,您需要將測驗分開,因為bash不支持前瞻零長度斷言:
valid_keyword_regex="^(task|master|develop|qa|tb|bug|story)"
valid_length_regex="^[a-z0-9._-]{2,15}$"
如果兩個測驗都成功,則您有一個有效的分支名稱。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/405527.html
標籤:
