Git 提交挂钩以添加消息

Git commit hook to prepend message

我最初的需求略有不同,得到了很好的答案: Prepend Git commit message with partial branch name

但是,我的需求发生了一些变化,我的正则表达式无法正常工作,我希望有人能给我一些指导。

我目前的分支命名规则是:bug/ab-123/branch-description

我需要做的是在每个 git 提交消息前加上每个正斜杠之间的值,因此在本例中为 ab-123。另外,我希望它大写为 AB-123.

我要找的最终结果是:

AB-123 my commit message goes here

我当前的准备提交消息正则表达式是:

branch=$(git symbolic-ref --short HEAD)

trimmed=$(echo "$branch" | sed -e 's:^[a-z]+\/\([a-z]{2,}-\d+\)::' -e \
    'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/')

echo $trimmed | sed -e 's/f/b/' | tr [a-z] [A-Z] | awk '{print("ls " )}'

但是这没有任何作用。关于我做错了什么的任何想法?谢谢!

如果你有一个像这样的漂亮的分隔字符串,你真的不需要正则表达式:

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

这给你 "the values in between each forward slash",转换为大写。