我想爲git寫一個prepare-commit-msg鉤子。該腳本應該做以下步驟:不能提取正則表達式的子字符串
- 獲取當前的git分支名(工作)
- 提取
issue-id
(不工作) - 檢查是否
issue-id
已經在提交味精 - 如果沒有插入
[issue-id]
提交信息前
的issue-id
了這種模式[a-zA-Z]+-\d+
和分支的名稱應該是舒美特像feature/issue-id-my-small-description
一樣興奮。
但現在,提取的部分是不正常...
這是我準備提交 - 味精腳本:
# Regex used to extract the issue id
REGEX_ISSUE_ID="s/([a-zA-Z]+-\d+)//"
# Find current branch name
BRANCH_NAME=$(git symbolic-ref --short HEAD)
# Extract issue id from branch name
ISSUE_ID= $BRANCH_NAME | sed -r $REGEX_ISSUE_ID
# Check if the issue id is already in the msg
ISSUE_IN_COMMIT=$(grep -c "\[$ISSUE_ID\]" $1)
# Check if branch name is not null and if the issue id is already in the commit msg
if [ -n "$BRANCH_NAME" ] && ! [[ $ISSUE_IN_COMMIT -ge 1 ]]; then
# Prefix with the issue id surrounded with brackets
sed -i.bak -e "1s/^/[$ISSUE_ID] /" $1
fi
編輯添加輸入/輸出例如
輸入$1
是git commit消息,類似於
fix bug on login
或
fix MyIssue-234 which is a bug on login
輸出應該是這個問題的ID即輸入:
[MyIssue-123] fix bug on login
請發佈**輸入**和期望**輸出的樣本** –
@PedroLobito發佈更新。我認爲我使用我的正則表達式w/sed的方式是錯誤的 – ylerjen
Inian現在刪除的答案顯示了主要問題。你應該關閉它並打開一個新問題,或編輯問題以顯示新腳本*和*當你運行它時會發生什麼。 – torek