【问题标题】:Prepend partial branch name to commit message在提交消息之前添加部分分支名称
【发布时间】:2021-08-07 09:25:44
【问题描述】:

当前的分支命名约定如下:

feature/NEU-123

我尝试创建一个 git 挂钩来添加提交消息,提交看起来像这样:

NEU-123: commit message

我没有创建这样的脚本的经验。这就是为什么我没有起点,需要尝试你的方法。

我查看了一些 Stackoverflow 条目,但找不到有关此特定命名约定的任何信息。 如果我在 master 分支上,或者任何只有一个单词分支名称的分支上,那么将完整的分支名称附加在前面也会很棒。

已经感谢您的帮助。

【问题讨论】:

  • 这不是一个好主意。提交不绑定到特定分支。为什么要这样做?
  • 因为我需要确定对特定分支的提交。如果将分支合并到主分支中,则很难这样做。每个分支都绑定一个问题。
  • @ElpieKay:在这种情况下,这并不是一个坏主意,因为分支名称是故意创建的,以匹配某种问题跟踪系统中的问题编号。 (我更喜欢将问题编号放入提交消息 body 而不是 header 但不同的组有不同的约定...)

标签: git githooks


【解决方案1】:

Client-side hook / Committing-Workflow Hooks 中所述,prepare-commit-msg 可以与提交模板结合使用,以编程方式插入信息。

示例:janniks/prepare-commit-msg which does get the branch name(使用 Ruby,但您可以使用任何您想要的脚本语言):

# get the current branch name
git_branch_command = "git rev-parse --abbrev-ref HEAD"
branch_name, error, result = Open3.capture3(git_branch_command)

ljpengelen/prefix-commit-message 中的相同想法

接近你要找的东西:mikhailsidorov/husky-prepare-commit-msg-example,以及它的 bash .githooks/prepare-commit-msg,来自Mikhail Sidorov

带有prepare-commit-msg 钩子的示例项目配置为在分支名称前自动提交消息

#!/bin/bash

COMMIT_MSG_FILE=$(echo $1 | head -n1 | cut -d " " -f1)

if [ -z "$BRANCHES_TO_SKIP" ]; then
 BRANCHES_TO_SKIP=(master develop test)
fi

BRANCH_NAME=$(git symbolic-ref --short HEAD)
BRANCH_NAME="${BRANCH_NAME##*/}"

BRANCH_EXCLUDED=$(printf "%s\n" "${BRANCHES_TO_SKIP[@]}" | grep -c "^$BRANCH_NAME$")
BRANCH_IN_COMMIT_MSG=$(head -1 $COMMIT_MSG_FILE | grep -c "$BRANCH_NAME")

if [ -n "$BRANCH_NAME" ] && ! [[ $BRANCH_EXCLUDED -eq 1 ]] && ! [[ $BRANCH_IN_COMMIT_MSG -ge 1 ]]; then 
 sed -i'.bak' -e "1s/^/$BRANCH_NAME /" $COMMIT_MSG_FILE
fi

【讨论】:

    猜你喜欢
    • 2018-09-13
    • 2022-08-02
    • 1970-01-01
    • 2014-04-01
    • 2017-03-16
    • 2020-05-07
    • 2015-07-17
    • 2017-11-13
    相关资源
    最近更新 更多