gpt4 book ai didi

ruby-on-rails - 创建成为可执行 chmod 777 gihook 文件的文件

转载 作者:行者123 更新时间:2023-12-04 18:37:19 26 4
gpt4 key购买 nike

我在 UBUNTU 上的 rails 工作
IM 触发了一个初始化程序,它将一个 githook 文件写入 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)
但是,我认为我做错了什么或错过了许可步骤?
其次,如何从 gitook 访问提交中的变量?某处有好的文档吗?

最佳答案

您的 Ruby 代码中有错字。通常,Unix 文件模式以八进制指定,这是人们在编程中实际使用八进制的最后一种情况。但是,您在此处指定了一个十进制值。
因此,您指定的八进制模式是 1411 ,这使您的文件对用户没有可执行权限,对组或其他人没有读取权限,并且设置了粘性位,这可能不是您想要的。
您可以通过将模式编写为 0777 来解决此问题。 :

new_file = File.new(file, File::CREAT|File::TRUNC|File::RDWR, 0777)
另请注意,使用模式 777 写入文件通常是一个安全问题,因为系统上的任何用户都可以修改它们。这意味着任何可以访问编写此 Hook 的目录的用户都可以在运行 Hook 时修改它以执行任意代码(看起来像是在运行 git commit 时)。更合适的模式可能是 755,它可以防止用户以外的各方对其进行修改。 commit-msg 的文档钩子(Hook)在 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.

关于ruby-on-rails - 创建成为可执行 chmod 777 gihook 文件的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66404361/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com