Commit db81327b authored by Jacob Vosmaer's avatar Jacob Vosmaer

Symlink the whole hooks directory

parent 27fe2ea5
...@@ -3,6 +3,7 @@ v2.0.0 ...@@ -3,6 +3,7 @@ v2.0.0
- Replace raise with abort when checking path to prevent path exposure - Replace raise with abort when checking path to prevent path exposure
- Handle invalid number of arguments on remote commands - Handle invalid number of arguments on remote commands
- Replace update hook with pre-receive and post-receive hooks. - Replace update hook with pre-receive and post-receive hooks.
- Symlink the whole hooks directory
- Ignore missing repositories in create-hooks - Ignore missing repositories in create-hooks
- Connect to Redis via sockets by default - Connect to Redis via sockets by default
......
...@@ -5,6 +5,8 @@ require_relative 'gitlab_config' ...@@ -5,6 +5,8 @@ require_relative 'gitlab_config'
require_relative 'gitlab_logger' require_relative 'gitlab_logger'
class GitlabProjects class GitlabProjects
GLOBAL_HOOKS_DIRECTORY = File.join(ROOT_PATH, 'hooks')
# Project name is a directory name for repository with .git at the end # Project name is a directory name for repository with .git at the end
# It may be namespaced or not. Like repo.git or gitlab/repo.git # It may be namespaced or not. Like repo.git or gitlab/repo.git
attr_reader :project_name attr_reader :project_name
...@@ -18,10 +20,10 @@ class GitlabProjects ...@@ -18,10 +20,10 @@ class GitlabProjects
attr_reader :full_path attr_reader :full_path
def self.create_hooks(path) def self.create_hooks(path)
%w(pre-receive post-receive).each do |hook_name| local_hooks_directory = File.join(path, 'hooks')
hook = File.join(path, 'hooks', hook_name) unless File.realpath(local_hooks_directory) == File.realpath(GLOBAL_HOOKS_DIRECTORY)
File.delete(hook) if File.exists?(hook) FileUtils.mv(local_hooks_directory, "#{local_hooks_directory}.#{Time.now.to_i}")
File.symlink(File.join(ROOT_PATH, 'hooks', hook_name), hook) FileUtils.ln_s(GLOBAL_HOOKS_DIRECTORY, local_hooks_directory)
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment