【问题标题】:Git Install Script How to enter shell commandGit安装脚本如何输入shell命令
【发布时间】:2014-12-23 12:31:12
【问题描述】:

这更像是一个与 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 install 脚本执行 shell 命令(我不知道什么是安装脚本,我假设它是指钩子)

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

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

所以我通过在本地 .openshift/action_hooks 目录中放置一个“开始”来尝试使用action hooks 的一些选项。

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

运气不太好。任何输入。我将把它作为一个单独的 q 来反对 actionhooks。

【问题讨论】:

    标签: linux git perl shell openshift


    【解决方案1】:

    这更像是一个与 git 相关的问题,而不是 openshift。

    其实它与openshift的关系比与Git的关系更大:Git only records 644 and 755 permissions

    但管理结帐(并更新工作树)的目标系统将根据default umask(在您的情况下可能是077)设置权限。
    确保默认的umask022

    关于钩子,检查它的名字('post-update',没有扩展名)和权限(它必须是可执行的,755会有用)

    【讨论】:

    • 感谢关于 umask 的提示。将其设置为 0077.如果我理解正确,将其设置为 022 将确保我的文件将具有 644 权限吗?
    • 钩子在我的本地 git hooks 文件夹中被命名为 post-update。现在,在发布之后,我尝试将钩子添加到 git 服务器,但出现错误。我还尝试在 openshift/git/app.git/hooks 文件夹中编辑钩子示例,但由于钩子文件夹归根用户所有,因此它没有授予我在此处写入文件的权限。
    • @RonAbraham 这可以解释为什么钩子没有执行:它是一个服务器钩子,由接收提交的远程仓库执行。而且你不能“git add”一个钩子:一个钩子永远不会被推动。
    • @RonAbraham 是的,这将是一个单独的问题(你可以链接回这个问题,你可以接受)
    • @只需创建一个新问题,这将更容易回答。我将对其进行编辑以将链接添加回此链接。
    【解决方案2】:

    在本例中为 gitweb 文件夹带来权限。

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

    【讨论】:

    • 不错的把戏。但你的帖子有点神秘。你的意思是创建某种符号链接?我没有得到你。