git-clone and post-checkout hook
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.
From the githooks documentation:
When git-init is run, a handful of example hooks are copied into the
hooks
directory of the new repository, but by default they are all disabled. To enable a hook, rename it by removing its.sample
suffix.
This initialization takes place as part of creating a clone—note the call to init_db
in builtin-clone.c
.
For example:
$ cat /tmp/my-git-template/hooks/post-checkout #! /bin/bashecho "Hello from $0"$ git clone --template=/tmp/my-git-template file:///tmp/repo.git my-cloneInitialized empty Git repository in /tmp/my-clone/.git/remote: Counting objects: 3, done.remote: Total 3 (delta 0), reused 0 (delta 0)Receiving objects: 100% (3/3), done.Hello from .git/hooks/post-checkout