我正在运行 OSX 10.6.5 和 Git 1.7.1
我在 /Library/Frameworks/Git.framework 的非标准位置安装了 git(虽然这在 Mac 上应该是标准位置;-) 。我自己的 PATH 设置得很好,git 工作得很好,直到……我用 Ruby 脚本设置了一个预提交钩子:
$ git commit -m "added some Yard documentation"
.git/hooks/pre-commit: line 1: #!/usr/bin/env: No such file or directory
pre-commit.sample 运行正常,因此看来 git 找不到 /usr/bin/env,或者其他很多东西,因为我已尝试将其直接发送到 ruby 等。只要 /bin/sh 就可以了。
那么,Git 从哪里获取它的 PATH?因为它没有使用我的,否则就不会发生这种情况。更重要的是,我如何让它看到 /usr/bin/env ?
我已经测试过 ruby 脚本,它可以工作。
补充一下:
$ cat /etc/paths
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
$ cat /etc/paths.d/git
/Library/Frameworks/Git.framework/Programs
Ruby 脚本的前几行(通过 ./pre-commit 或 ruby pre-commit 运行)
#!/usr/bin/env ruby -wKU
class String
def expand_path
File.expand_path self
end
def parent_dir
File.dirname self.expand_path
end
end
答案1
从我将文件复制到 .git/hooks 开始,文件就不知怎么损坏了,一个具有相同代码的新文件修复了这个问题。非常感谢 @Redmumba 和 @Dennis Williamson 让我知道我在错误的地方寻找。