【问题标题】:Git post-receive hook not firing external scriptGit post-receive hook不触发外部脚本
【发布时间】:2012-11-01 14:31:16
【问题描述】:

这是我到目前为止所做的:

  1. 我有一个托管网站及其 git 存储库的服务器。
  2. 我有一个名为 git 的用户,他拥有所有存储库,并且能够以任何用户身份登录而无需输入密码。
  3. 我在我的 repo 的 hooks 目录中创建了一个名为 post-receive 的钩子。
  4. 我还创建了一个名为 gitpull 的脚本,它会自动将信息拉到网站上。

一切正常当我输入这个命令时:

su - git -c "/git/sitename.git/hooks/post-receive"

但是当我从我的开发机器推送一些东西时,它不会运行脚本gitpull

这是我的文件:

  • /etc/gitpull:

    #!/bin/bash
    su - $1 -c "cd ~/www;git pull;"
    
  • /git/sitename/hooks/post-receive:

    #!/bin/bash
    /etc/gitpull sitename
    

我该如何解决这个问题?我做错了什么?

【问题讨论】:

  • {%GIT REPO%} 是存储库的名称,例如mysampplerepo
  • 我假设您的意思是su - sh -c ...,因为git -c 用于设置一次性配置选项。

标签: git bash hook


【解决方案1】:

post-receive 钩子需要被标记为可执行,否则 git 不会运行它。当您使用sh -c 进行测试时,您绕过了执行权限检查。

我敢打赌,如果你运行 chmod a+x /git/sitename.git/hooks/post-receive,它会起作用。


所以不是这样,对吧?

哦,su 在运行时会提示输入密码,不是吗?您无法为钩子提供输入,因此您需要确保自己可以作为普通用户帐户输入/git/sitename.git/hooks/post-receive,并且无需您进行任何交互即可运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-22
    • 2013-06-19
    • 1970-01-01
    • 1970-01-01
    • 2014-06-02
    • 2013-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多