我最初的需求略有不同,给出了一个很好的答案: Prepend Git commit message with partial branch name
然而,我的需求有所改变,我所拥有的正则表达式没有按预期工作,我希望有人可以给我一些指导。
我目前的分支命名惯例是:bug/ab-123/branch-description
我需要做的是在每个git commit消息前面加上每个正斜杠之间的值,所以在这种情况下ab-123
。另外,我希望它大写为AB-123
。
我正在寻找的最终结果是:
AB-123 my commit message goes here
我当前的prepare-commit-message正则表达式是:
branch=$(git symbolic-ref --short HEAD)
trimmed=$(echo "$branch" | sed -e 's:^[a-z]+\/\([a-z]{2,}-\d+\):\1:' -e \
'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/')
echo $trimmed | sed -e 's/f/b/' | tr [a-z] [A-Z] | awk '{print("ls " $1)}'
然而,这没有任何作用。关于我做错了什么的任何想法?谢谢!
答案 0 :(得分:1)
如果你有一个很好的分隔字符串,你真的不需要正则表达式:
branch=$(git symbolic-ref --short HEAD)
trimmed=$(echo $branch | cut -f2 -d/ | tr '[:lower:]' '[:upper:]')
所以给出:
$ git status
On branch bug/ab-123/foobar
nothing to commit, working directory clean
我们得到:
$ branch=$(git symbolic-ref --short HEAD)
$ echo $branch
bug/ab-123/foobar
和
$ trimmed=$(echo $branch | cut -f2 -d/ | tr '[:lower:]' '[:upper:]')
$ echo $trimmed
AB-123
这会给你“每个正斜杠之间的值”,转换为大写。