git post-receive hook没有运行

33 git hook

我有一个裸的repo服务器端,我能够成功提交并从我的本地机器推送.但是,后接收挂钩未运行.细节:

  • 使用SSH作为协议
  • 我已将标准的"post-receive.sample"重命名为"post-receive"
  • 此文件具有-rwxr-xr-x权限
  • 该文件由拥有repo的同一用户拥有,该用户与登录和推送的SSH用户相同
  • 实际的推动很顺利; 文件被更新 - 它只是不运行的钩子
  • 我尝试echo "Some text"在钩子之前和之后放置,但是没有显示(参见:Post Commit Hook Not Running).
  • 钩子脚本包含在下面,虽然这似乎不会导致问题
  • 在Ubuntu 10.04上使用git 1.7.0.4

.

user@server:/home/repos/project1/hooks# cat post-receive
#!/bin/sh
echo "Hook is running..."
export GIT_WORK_TREE=/home/web/project1/www/
git checkout -f
rm -rf /home/web/project1/www/temp/
Run Code Online (Sandbox Code Playgroud)

Nic*_*k F 59

为了运行Git钩子,它需要设置权限以允许它可执行.如果挂钩似乎没有运行,请检查权限,并确保它是可执行的.如果不是,你可以使所有钩子可执行如下:

chmod ug+x .git/hooks/*
Run Code Online (Sandbox Code Playgroud)

...或者如果你想制作一个钩子(例如post-receive)可执行文件:

chmod ug+x .git/hooks/post-receive
Run Code Online (Sandbox Code Playgroud)

(感谢这篇文章)


der*_*tes 21

我有这个问题.我的脚本文件名中有拼写错误.

收到后而不是收到后

  • 刚刚花了大约一个小时尝试调试这个...你的答案结果是正确的‍♂️谢谢 (2认同)

小智 13

该问题与文件系统的安装有关.分区已安装为noexec,因此无法执行任何文件.这导致钩子不能运行.我删除了noexec标志,它现在工作得很好.

  • 你是怎么删除这个无钩的部分的? (3认同)
  • 我遇到过同样的问题.我感动git的目录到不同的位置(例如`git的MV "$ HOME/repo.git"`),然后跑`GIT中的init --separate-混帐DIR = $ HOME/repo.git`初始化目录再次.之后,钩子确实按预期运行(确保未设置`GIT_WORK_TREE`环境变量或其他覆盖,否则将不使用来自`.git/config`的工作树). (2认同)

Rak*_*esh 5

如果没有对代码库进行任何更改,则GIT似乎不会运行接收后挂钩。

就我而言

后挂钩未得到执行,但是“推”操作不断返回以下消息。

一切都是最新的

因此,我只是在代码中创建了一个空文件,然后提交并推送到远程。在其上执行后接收挂钩。

  • 当我反复测试以调整代码部署时,我遇到了这个问题。一旦设置完成,在现实世界中,无论如何代码库都会发生变化。因此,这个问题与我们大多数人无关。话虽如此,您的问题的答案是,我没有对此进行进一步调查。所以我现在不知道 (2认同)