commit-msg 挂钩中缺少提交消息文件

Posted

技术标签:

【中文标题】commit-msg 挂钩中缺少提交消息文件【英文标题】:Commit message file missing in commit-msg hook 【发布时间】:2020-05-11 06:24:56 【问题描述】:

我正在尝试编写一个 commit-msg 钩子来格式化我的提交消息以包装在最大列宽:

#!/bin/bash

format_max_column_width() 
  MAX_LINE_LENGTH_CHARS=50

  cat "$1" | grep -v "^Bug: |^Change-Id: |^Signed-off-by: |^CC: " > body
  cat "$1" | grep "^Bug: |^Change-Id: |^Signed-off-by: |^CC: " > footer
  fmt -w "$MAX_LINE_LENGTH_CHARS" body > body
  cat body > "$1"
  cat footer >> "$1"
  rm body footer


format_max_column_width

由于某种原因,当我提交时,我收到以下错误,因为 $1 似乎是空的。

cat: '': No such file or directory
cat: '': No such file or directory
.git/hooks/commit-msg: line 9: : No such file or directory
.git/hooks/commit-msg: line 10: : No such file or directory

此外,如果我只是echo $1,则不会打印任何内容,从而证实了这一理论。怎么回事?

【问题讨论】:

【参考方案1】:

在 shell 函数中 $1 表示“函数的第一个参数”,而不是脚本。您需要将第一个脚本参数进一步传递给函数:

format_max_column_width "$1"

【讨论】:

以上是关于commit-msg 挂钩中缺少提交消息文件的主要内容,如果未能解决你的问题,请参考以下文章

在 Git 钩子中获取提交消息

python commit-msg hook检查git存储库中是否已经存在传入提交消息的提交

缺少提交消息中的 Change-Id 时出现 Gerrit 错误

如何将缺少的依赖项添加到仅运行一次的 useEffect 挂钩?

错误Appstore连接:Info.plist文件中缺少目的字符串

Git 电子邮件挂钩以包含提交消息和更改的文件