Search code examples
gitgitolite

Is it possible to implement repo based hooks in Gitolite?


I want to implements repo based hooks in gitolite.

Is it Possible ?

I am using gitolite 3 (g3).


Solution

  • Since Gitolite 3.6+, it is possible with "repo-specific hooks":

    • add this line in the rc file, within the %RC block, if it's not already present, or uncomment it if it's already present and commented out:
    LOCAL_CODE => "$rc{GL_ADMIN_BASE}/local",
    
    • uncomment the 'repo-specific-hooks' line in the rc file or add it to the ENABLE list if it doesn't exist.

    • If your rc file does not have an ENABLE list, you need to add this to the POST_COMPILE and the POST_CREATE lists. Click here for more on all this.

    • put your hooks into your gitolite-admin clone, as follows:

    # on your workstation
    cd /path/to/your/gitolite-admin-clone
    mkdir -p local/hooks/repo-specific
    
    • Now add your hooks to that directory, but instead of using the git "standard" names (pre-receive, post-receive, post-update), you use descriptive names (e.g. "deploy", "RSS-post", etc).

    • add them to the repos you want them to be active in, in your conf file. For example:

    repo foo
        option hook.post-update     =   jenkins
    repo bar @baz
        option hook.post-update     =   deploy RSS-post
    
    • add, commit, and push the admin repo.