Git Server Hooks – Are they executed locally on the client/clone machine?

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.

  • Running Laravel from a git repo
  • Can you set both your username and real name in GIT?
  • What does the “diff --git” output in “git diff” refer to?
  • Moving remote branch
  • What sbt plugins are available for frequent (multiple times per day) releases of a project from git?
  • Using Git, what's the best way to subtree merge an external project that has submodules?
  • 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?

  • Merging changes in intermediate branches with DVCS
  • Pycharm to show current working branch name
  • Working with GIT, but export master branch to SVN - branch broken
  • Find out if a particular commit exists on a git branch
  • Managing SSH keys within Jenkins for Git
  • Reasons not to commit to master
  • 3 Solutions collect form web for “Git Server Hooks – Are they executed locally on the client/clone machine?”

    There’s a post on superuser which talks about When I run a Git hook in a repo on a network share which binaries are used:

    “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.”

    They run on the server. Otherwise it would be very inconvenient to write scripts (they would have to run on all operating systems etcetera).

    You say

    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.

    Can you please elaborate. What did you do when you got this ip address? How did you use these two repositories?

    EDIT: A reference

    Looks like we could find the reason.
    I had used file:// protocol to create a clone. When my colleague attempted with SSH, server IP was printed out as expected.

    Git Baby is a git and github fan, let's start git clone.