创建一个成为可执行文件的文件 chmod 777 gihook 文件

Creating a file that becomes executable chmod 777 gihook file

我在 rails UBUNTU

工作

IM 触发一个初始化程序,将 git 挂钩文件写入 git 目录,一切正常,文件创建代码很好,但在提交触发器上我得到

hint: The '.git/hooks/commit-msg' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.

创建的文件具有可执行权限....我想?

new_file = File.new(file, File::CREAT|File::TRUNC|File::RDWR, 777)

但是,我认为我做错了什么或缺少许可​​步骤?

其次,如何从 git 挂钩访问提交中的变量?哪里有好的文档吗?

您的 Ruby 代码中有错字。通常,Unix 文件模式以八进制指定,这是人们在编程中实际使用八进制的最后一种情况。但是,您在此处指定了一个小数值。

因此,您指定的八进制模式是1411,这使得您的文件对用户没有可执行权限,对组或其他没有读取权限,并且设置了粘滞位,这可能不是你想要的。

您可以通过将模式写为 0777:

来解决此问题
new_file = File.new(file, File::CREAT|File::TRUNC|File::RDWR, 0777)

另请注意,使用模式 777 写入文件通常是一个安全问题,因为系统上的任何用户都可以修改它们。这意味着任何可以访问写入此挂钩的目录的用户都可以修改它以在挂钩为 运行 时执行任意代码(看起来像 git commit 为 运行).更合适的模式可能是 755,它可以防止用户以外的其他方修改它。

commit-msg 挂钩的文档在 githooks 手册页中。根据文档:

It takes a single parameter, the name of the file that holds the proposed commit log message. Exiting with a non-zero status causes the command to abort.