Git GUI 忽略 commit-msg 钩子
Git GUIs ignore commit-msg hook
我编写了一个 commit-msg 挂钩来检查提交消息以使用正确的格式。
使用 git bash 时,它按预期工作:
$ git commit -m "test"
[Invalid Commit Message]
------------------------
Commit message needs to start with an uppercase character and be imperative
Example: Add new character model
Regex: ^[A-Z](?!\w*ed).*$
Actual commit message: "test"
Actual length: 5
当使用 Git GUI(使用 Tortoise Git 和 GitHub for Desktop 进行测试)时,尽管它接受完全相同的提交消息。好像直接忽略了钩子。
Git GUI 不执行这个钩子吗?
更新:我发现这个钩子正在被乌龟执行git它只是因为使用的字符集而出错:“”grep:- P 仅支持单字节和 UTF-8 语言环境
我可以用“LC_ALL=en_US.utf8”解决这个问题(参见)
Tortoise Git 现在阻止损坏的提交消息,但 Github Desktop 似乎仍然忽略了这个钩子。
与 Tortoise 不同,虽然我看不到它在内部做什么。
LC_ALL=en_US.utf8 是正确的解决方案。
它必须与 grep 命令在同一行中。
我尝试将它设置在文件的顶部,它以某种方式适用于 Tortoise 但不适用于 GitHub Desktop。
这是解决方案:
if [[ $(LC_ALL=en_US.utf8 grep -Pc '^[A-Z].*$' <<< ${title} ) == 0 ]];
GitHub 仅当脚本明确输出非 0 的退出代码时,桌面才会输出 stderr 输出。当脚本失败时,它不会输出任何错误。
TortoiseGit 有自己的钩子,请使用这些钩子。
见https://tortoisegit.org/docs/tortoisegit/tgit-dug-settings.html#tgit-dug-settings-hooks
此外,在某些情况下,某些挂钩在设计上不受支持(例如,prepare-commit-msg,参见 Why does TortoiseGit run prepare-commit-msg after commit message edit?)。
我编写了一个 commit-msg 挂钩来检查提交消息以使用正确的格式。 使用 git bash 时,它按预期工作:
$ git commit -m "test"
[Invalid Commit Message]
------------------------
Commit message needs to start with an uppercase character and be imperative
Example: Add new character model
Regex: ^[A-Z](?!\w*ed).*$
Actual commit message: "test"
Actual length: 5
当使用 Git GUI(使用 Tortoise Git 和 GitHub for Desktop 进行测试)时,尽管它接受完全相同的提交消息。好像直接忽略了钩子。
Git GUI 不执行这个钩子吗?
更新:我发现这个钩子正在被乌龟执行git它只是因为使用的字符集而出错:“”grep:- P 仅支持单字节和 UTF-8 语言环境
我可以用“LC_ALL=en_US.utf8”解决这个问题(参见
Tortoise Git 现在阻止损坏的提交消息,但 Github Desktop 似乎仍然忽略了这个钩子。 与 Tortoise 不同,虽然我看不到它在内部做什么。
LC_ALL=en_US.utf8 是正确的解决方案。
它必须与 grep 命令在同一行中。 我尝试将它设置在文件的顶部,它以某种方式适用于 Tortoise 但不适用于 GitHub Desktop。
这是解决方案:
if [[ $(LC_ALL=en_US.utf8 grep -Pc '^[A-Z].*$' <<< ${title} ) == 0 ]];
GitHub 仅当脚本明确输出非 0 的退出代码时,桌面才会输出 stderr 输出。当脚本失败时,它不会输出任何错误。
TortoiseGit 有自己的钩子,请使用这些钩子。
见https://tortoisegit.org/docs/tortoisegit/tgit-dug-settings.html#tgit-dug-settings-hooks
此外,在某些情况下,某些挂钩在设计上不受支持(例如,prepare-commit-msg,参见 Why does TortoiseGit run prepare-commit-msg after commit message edit?)。