将部分分支名称添加到提交消息中

Prepend partial branch name to commit message

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

feature/NEU-123

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

NEU-123: commit message

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

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

已经感谢您的帮助。

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, and its bash .githooks/prepare-commit-msg, from Mikhail Sidorov

Example project with prepare-commit-msg hook configured to prepend branch name to commit message automatically

#!/bin/bash

COMMIT_MSG_FILE=$(echo  | 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