简体   繁体   中英

git post-receive hook not running

I have a bare repo server-side, and I am able to successfully commit and push from my local machine. However, the post-receive hook is not running. Details:

  • Using SSH as protocol
  • I have renamed the standard "post-receive.sample" to "post-receive"
  • This file has -rwxr-xr-x permissions
  • The file is owned by the same user that owns the repo, which is the same SSH user that logs in and pushes
  • The actual pushing goes fine; files are updated - it's just the hook that does not run
  • I tried putting echo "Some text" before and after the hook, but this is not shown (see: Post Commit Hook Not Running ).
  • Hook script is included below, although this appears not to be causing the problem
  • Using git 1.7.0.4 on Ubuntu 10.04

.

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/

In order for a Git hook to run, it needs to have permissions set to allow it to be executable. If a hook doesn't seem to be running, check the permissions , and make sure it's executable. If it isn't you can make all hooks executable like this:

chmod ug+x .git/hooks/*

...or if you want to make a single hook (eg. post-receive ) executable:

chmod ug+x .git/hooks/post-receive

(Thanks to this post )

I had this problem. I had a typo in my script filename.

post-recieve instead of post-receive

The issue was related to the mounting of the filesystem. The partition was mounted as noexec , and therefore no files could be executed. This caused the hook not to run. I removed the noexec flag and it now works just fine.

Seems GIT will NOT run the post-receive hook if there are no changes to the code base.

In my case,

The post hook was not getting executed, but the "push" operation kept returning the following message.

Everything up-to-date

So I just created an empty file in my code, did commit and then pushed to remote. On which the post-receive hook got executed.

I used MacBook and this helped in my situation:

chmod ug+x .husky/*
chmod ug+x .git/hooks/*

I had the same problem on a Centos 6 system, where it turned out that SELinux prevented hooks scripts from running. Turning httpd_git_script_t into a permissive domain helped here (since "sesearch -A -s httpd_git_script_t -p exec" yielded nothing, ie. no process running in the httpd_git_script_t domain was allowed exec permission):

semanage permissive -a httpd_git_script_t

Are you sure it's not running? It must be running, you just can't see it. My guess is that there is not stdout set to your ssh session at the time it's executed, so you won't ever see the output of your echo. The link suggests testing it locally, not via ssh.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM