这一切都是在OS X Mojave上实现的。
我试图阻止自己错误地提交到master分支,因为这是我经常做的一件事,使用the pre-commit Git hook from this SO answer时稍有更改,因为我使用bash而不是sh。不过,每次我尝试运行它时,都会得到以下结果:
fatal: cannot exec '.git/hooks/pre-commit': Operation not permitted我检查了.git和.git/hooks目录的权限。两者都是drwxrwxrwx。pre-commit本身的权限包括:
-rwxr-xr-x@ 1 emeyer staff 25 Feb 5 11:50 pre-commit…这与我复制到pre-commit然后替换内容的pre-commit.sample文件相同。我尝试过chmod +w,但没有解决这个问题。
我决定简化我的测试,并用以下内容替换pre-commit的内容:
#!/bin/bash
echo "Test"我仍然得到上面引用的Operation not permitted错误。我也尝试了#!/bin/sh,就像SO答案的例子一样;结果是一样的。
如果我尝试直接运行脚本,在命令行中输入./pre-commit,我会得到一个稍微不同的错误:-bash: ./pre-commit: /bin/bash: bad interpreter: Operation not permitted。无论我使用/bin/bash、/bin/sh、/usr/local/bin/bash还是/usr/local/bin/sh,错误都是一致的。
搜索、搜索和搜索都没有得到一个有效的答案,所以我在这里询问如何允许操作,或者任何需要的操作。
发布于 2020-02-06 02:54:19
pre-commit文件可能具有与其关联的文件元数据( ls输出中的@表明了这一点),并且该文件元数据可能包括com.apple.quarantine属性。
您应该能够使用以下命令确认这一点:
ls -l@ pre-commit
或
xattr -l pre-commit
并且您应该能够使用以下命令删除该属性:
xattr -d com.apple.quarantine pre-commit
https://stackoverflow.com/questions/60080701
复制相似问题