【问题标题】:Git hook commit-msg to ensure the commit message contains a string that conforms to a regexGit hook commit-msg 以确保提交消息包含符合正则表达式的字符串
【发布时间】:2015-06-16 14:01:59
【问题描述】:

我正在尝试将 bash 脚本用作 git commit-msg 挂钩。本质上,我想确保提交消息包含与正则表达式匹配的字符串。我的正则表达式是正确的,但我不确定如何检查 .git/COMMIT_EDITMSG 中包含的消息是否与正则表达式匹配。

#!/bin/sh
#
# This hook verifies that the commit message contains a reference to a tfs item

RED=$(tput setaf 1)
NORMAL=$(tput sgr0)
# Regex to validate a string contains "#" followed by 4 or 5 digits anywhere in the commit message
regex="#[0-9]{4,5}($|[^0-9])"

# I NEED TO FIGURE OUT HOW TO READ THE CONTENTS OF THIS FILE AND ENSURE IT MATCHES THE REGEX
echo "MSG = $1" # This prints "MSG = .git/COMMIT_EDITMSG"

# If the commit message does not match the regex
if ! [[ $1 =~ $regex ]]; then
  echo "${RED}ERROR - Missing tfs item in commmit message.$NORMAL"
  exit 1
else
  echo "MESSAGE IS GOOD?"
fi

exit 0

【问题讨论】:

  • 您是否寻求帮助以确保此代码适用于所有情况? (这就是我的解释)。我们必须更多地了解你试图诱捕的案件。照原样,一件事可能会导致您的代码出现问题。我建议将线路更改为 if ! [[ "$1" =~ "$regex" ]]; then 。祝你好运!
  • 我只是想弄清楚如何读取文件的内容并针对我的正则表达式运行它。

标签: regex linux git bash githooks


【解决方案1】:

我是这样想的:

#!/bin/sh
#
# This hook verifies that the commit message contains a reference to a tfs item

RED=$(tput setaf 1)
NORMAL=$(tput sgr0)
# Regex to validate a string contains "#" followed by 4 or 5 digits anywhere in the commit message
regex="#[0-9]{4,5}($|[^0-9])"
file=`cat $1` # The file that contains the commit message

# If the commit message does not match the regex
if ! [[ $file =~ $regex ]]; then
  echo "${RED}ERROR - Missing tfs item in commmit message.$NORMAL"
  exit 1
else
  echo "MESSAGE IS GOOD?"
fi

exit 0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-30
    • 2013-10-16
    • 2021-09-29
    • 2011-06-27
    • 2011-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多