Git安装脚本如何输入shell命令

3
这是一个与 Git 相关的问题,而不是 OpenShift。
当我使用 Git 向 Git 服务器推送文件时,我发现我的 Perl index.cgi 文件的文件权限在我的 OpenShift 存储库中被更改为700。
因此,每次推送完成后,我都必须使用 SSH 登录到服务器,并在我的 $OPENSHIFT_REPO_DIR 中执行 chmod a+x index.cgi 命令将其更改为755。
我在 Git 文档中读到,可以添加一个钩子,因此我尝试更新 hooks 目录中的 post-update 脚本,使用以下命令:
exec chmod a+x $OPENSHIFT_DATA_DIR/index.cgi

然而,似乎并没有起作用。

你能告诉我错在哪里吗?
如何确保每次推送文件时不必进行 chmod 更改?

如何通过git安装脚本执行shell命令(我不知道什么是安装脚本,我假设它指的是挂钩)?

根据以下建议,我认为需要将挂钩添加到服务器上,所以我尝试了一下,但是出现了错误:

$ git add .git/hooks/post-update error: Invalid path '.git/hooks/post-update' error: unable to add .git/hooks/post-update to index

因此,我尝试使用动作挂钩中的某些选项,将 “start” 放置在本地 .openshift/action_hooks 目录中。

我尝试使用以下命令:exec chmod a+x register.cgi 甚至是 chmod a+x register.cgi

没有什么运气。有什么建议吗?我将针对 actionhooks 提出单独的问题。

2个回答

3
这更多是关于Git而非OpenShift的问题。
实际上,它与OpenShift的关系比与Git更密切: Git only records 644 and 755 permissions
但是,管理检出(和更新工作树)的目标系统将根据默认的umask(在您的情况下可能为077)设置权限。
确保默认的umask022
关于钩子,请检查其名称('post-update',无扩展名)和权限(必须可执行,755会有用)。

谢谢您提供有关umask的提示。它被设置为0077。如果我理解正确,将其设置为022会确保我的文件具有644权限,对吗? - Ron Abraham
钩子在我的本地git钩子文件夹中被命名为post-update。现在,在您的帖子之后,我尝试将钩子添加到git服务器,但是出现了错误。我还尝试编辑openshift/git/app.git/hooks文件夹中的钩子示例,但是它没有给我写入该文件的权限,因为hooks文件夹归root所有。 - Ron Abraham
1
@RonAbraham 这就解释了为什么钩子没有执行:它是一个服务器钩子,由接收提交的远程存储库执行。而且你不能“git add”一个钩子:钩子永远不会被推送。 - VonC
@RonAbraham 是的,那将是一个单独的问题(您可以链接回这个问题,然后您可以接受它)。 - VonC
@只需创建一个新问题,这样回答会更容易。我会编辑它以添加链接返回此问题。 - VonC
谢谢VonC,这是链接:link - Ron Abraham

1

在这种情况下,将权限授予gitweb文件夹。

gitweb/
drwxr-xr-x 3 root root 4096 Sep 25 12:01 .
drwxr-xr-x 225 root root 12288 Oct 27 20:10 ..
-rwxr-xr-x 1 root root 251319 Sep 23 04:36 gitweb.cgi
lrwxrwxrwx 1 root root 10 Sep 23 04:36 index.cgi -> gitweb.cgi
drwxr-xr-x 2 root root 4096 Sep 25 12:01 static


不错的技巧。但是你的帖子有点晦涩。你的意思是创建某种符号链接吗?我没明白你的意思。 - Ron Abraham

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接