【问题标题】:Git commit hook to prepend messageGit 提交挂钩以添加消息
【发布时间】:2016-04-20 20:28:58
【问题描述】:

我最初的需求略有不同,得到了很好的答案: 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

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

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)}'

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

【问题讨论】:

    标签: git pre-commit-hook


    【解决方案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
    

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

    【讨论】:

    • 这很有魅力,谢谢!我将其添加到末尾以确保包含我的提交消息:echo "$trimmed $(cat $1)" > $1
    猜你喜欢
    • 2020-09-11
    • 2016-04-02
    • 2015-03-09
    • 2015-09-10
    • 1970-01-01
    • 1970-01-01
    • 2012-08-23
    • 1970-01-01
    相关资源
    最近更新 更多