预提交钩子中的内联 bash 脚本

Inline bash script in pre commit hook

提问人:dev1417 提问时间:9/8/2023 最后编辑:anthony sottiledev1417 更新时间:9/10/2023 访问量:102

问:


      - id: check-modified-files
        name: Check for Modified Unstaged Files
        entry: bash
        language: system
        args:
        - -c
        - |
            if [ $(git diff Resources/config | wc -l) -ne 0 ];then
              echo "Error: Unstaged files found in the specific folder: ./Resources/config"
                exit 1
            fi

尝试添加提交前钩子,如果在特定文件夹中检测到未暂存的文件,该钩子将失败。即使某些文件未暂存,这也会始终传递。你能说出这里有什么问题吗?

bash pre-commit-hook 预提交 pre-commit.com

评论

1赞 LMC 9/8/2023
git diff Resources/config可能会引发错误,向 stderr 发送错误消息并返回 0git diff Resources/config | wc -l
0赞 Robert 9/8/2023
查看 stackoverflow.com/questions/30041090/ 答案...
0赞 dev1417 9/8/2023
不,这不是抛出错误,已经检查过了。你能说出这里出了什么问题吗?谢谢

答:

0赞 anthony sottile 9/10/2023 #1

文档中 -- pre-commit 将始终在执行钩子之前放弃对工作目录的更改。钩子在将要提交的内容上运行,而不是在用户对工作目录中的本地文件可能具有的任何状态上运行。

所以你永远不会导致文件被更改,钩子总是会通过。git diff

一个小问题 -- 在编写不对文件进行操作的脚本钩子时,您可能还需要pass_filenames: false


免责声明:我写了预提交