我的分支名称模式如下 ticketId_ticketDescription 例如 的 MIT-1018 -make-转到重定向-聪明
所以我希望每个提交都以ticketId作为前缀,在这种情况下它是 [ MIT-1018
所以,如果我提交
git commit -am“这是一条提交消息” 所以消息应该是“ MIT-1018:这是一个提交消息”
这是我的尝试
#!/bin/bash
ticket=`git rev-parse --abbrev-ref HEAD | sed -e 's/MIT-[0-9]+//'`
echo $ticket
comment=`cat $1`
search=`grep "$ticket" $1`
if [ -n "$ticket" ] && [ -z "$search" ]
then
echo "$ticket: $comment" > $1
fi
但是这会将整个分支名称添加为前缀,而不仅仅是TicketId
答案 0 :(得分:1)
您可以将regex
in bash
与字符类[[:alnum:]]
和[[:digit:]]
一起使用,以根据需要提取票证标识符。
$ ticket="$(git rev-parse --abbrev-ref HEAD)"
$ commitMessage="This is a commit message"
# Assuming the variable has the string "MIT-1018-make-goto-redirection-smarter"
# ticket="MIT-1018-make-goto-redirection-smarter"
$ [[ $ticket =~ (([[:alnum:]]{3})-([[:digit:]]{3,})).* ]] && ticketID=${BASH_REMATCH[1]}
$ printf "%s\n" "$ticketID: $commitMessage"
MIT-1018: This is a commit message