Git commit hook挂起消息

时间:2016-04-20 20:28:58

标签: git pre-commit-hook

我最初的需求略有不同,给出了一个很好的答案: 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)}'

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

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

这会给你“每个正斜杠之间的值”,转换为大写。