Search code examples
ubuntuubuntu-14.04gitlabgitlab-omnibus

Gitlab syncing folder "hooks" in all repositories of group


I have Gitlab setted locally on my server. I noticed, that when i am adding some code to "post-receive" file in some repository, all changes applying to all other repositories in that group.

How to stop it?


Solution

  • Check the "Custom Git hooks setup":

    Normally, Git hooks are placed in the repository or project's hooks directory. GitLab creates a symlink from each project's hooks directory to the gitlab-shell hooks directory for ease of maintenance between gitlab-shell upgrades.

    This explains why your hook seems to be propagated to all repos of the group.

    Follow the steps below to set up a custom hook:

    • Pick a project that needs a custom Git hook.
    • On the GitLab server, navigate to the project's repository directory. For an installation from source the path is usually /home/git/repositories/<group>/<project>.git.
      For Omnibus installs the path is usually /var/opt/gitlab/git-data/repositories/<group>/<project>.git.
    • Create a new directory in this location called custom_hooks.
    • Inside the new custom_hooks directory, create a file with a name matching the hook type.
      For a pre-receive hook the file name should be pre-receive with no extension.
    • Make the hook file executable and make sure it's owned by git.
    • Write the code to make the Git hook function as expected