Setup:
I have master repo on Windows machine and a clone on another windows machine.
Inside my update hook, I have added ipconfig to print IP address.
I was expecting to see the master's IP address, but it actually prints out clone's.
This makes me think that server-side git hooks ( pre-receive, update and post-receive ) are actually downloaded and run locally on the client/clone machine that is doing actual push.
If this is correct, then if puts a lot of restrictions on how the hook should be written. e.g. a hook written in perl shall need all clients to have perl to execute this hook locally.
Can someone confirm if this is the behaviour?
解决方案
"If it’s a regular (SMB/CIFS) network share, it’s executed on the client.
If you use Git via SSH or HTTPS, Git (possibly an alternative implementation) is running on the remote side and executes hooks.
More simplified: If you have a file path set as the remote, it’s executed locally, even when it’s actually SSHFS or whatnot. Otherwise, it’s executed remotely."