git-clone and post-checkout hook

git, git-clone, hook

Solution

I suppose you could make a custom installation - rename the hooks in `.../share/git-core/templates/hooks` to remove the `.sample` suffix.

You could also make a template directory full of symlinks to a hooks directory inside the repository, (e.g. `post-checkout -> ../../hooks/post-checkout`). Then if the cloned repo contained that particular hook, it'd get executed.

You're right, though, in most cases it will not happen.

Edit: I just tested it, and the `--template` option does appear to preserve permissions, so that's a much more straight-forward way to make it happen. What'd you see to indicate that it stripped that bit?

The final say on versions: You're looking at documentation online for a newer version of git than you're using. This feature was added in `dfa7a6c` (clone: run post-checkout hook when checking out); `git describe` says this wasn't included until `v1.6.2-rc2`.

Problem

According to the manual, the `post-checkout` hook is run after a `git checkout` (just as expected) but also after a `git clone` (unless you pass `--no-checkout`). Very well, now, considering the following: - you don't have a local repository before a `git clone` - hooks are not synced between remotes - hooks stored in a custom template directory used with `--template` are copied non-executable and therefore not executed after `git clone` (that is actually not true as stated by Jefromi in his answer, but the hook is still not executed) It seems impossible that a `post-checkout` hook ever gets executed after a `git clone`. Still, the `githooks` man page at http://git-scm.com/docs/githooks explicitely states a way to avoid it being executed, and also parameters passed in case it is executed, which would indicate it is possible to execute a custom hook after a `git-clone`. So, how is it possible? I am obviously missing something here. Turns out

Original source