summaryrefslogtreecommitdiff
path: root/bin/create-hooks
diff options
context:
space:
mode:
Diffstat (limited to 'bin/create-hooks')
-rwxr-xr-xbin/create-hooks26
1 files changed, 24 insertions, 2 deletions
diff --git a/bin/create-hooks b/bin/create-hooks
index d4111dc..e8b53c1 100755
--- a/bin/create-hooks
+++ b/bin/create-hooks
@@ -5,16 +5,38 @@
# This script is used when restoring a GitLab backup.
require_relative '../lib/gitlab_init'
-require File.join(ROOT_PATH, 'lib', 'gitlab_projects')
require File.join(ROOT_PATH, 'lib', 'gitlab_metrics')
+def create_hooks(path)
+ global_hooks_directory = File.join(ROOT_PATH, 'hooks')
+ local_hooks_directory = File.join(path, 'hooks')
+ real_local_hooks_directory = :not_found
+
+ begin
+ real_local_hooks_directory = File.realpath(local_hooks_directory)
+ rescue Errno::ENOENT
+ # real_local_hooks_directory == :not_found
+ end
+
+ if real_local_hooks_directory != File.realpath(global_hooks_directory)
+ if File.exist?(local_hooks_directory)
+ $logger.info "Moving existing hooks directory and symlinking global hooks directory for #{path}."
+ FileUtils.mv(local_hooks_directory, "#{local_hooks_directory}.old.#{Time.now.to_i}")
+ end
+ FileUtils.ln_sf(global_hooks_directory, local_hooks_directory)
+ else
+ $logger.info "Hooks already exist for #{path}."
+ true
+ end
+end
+
repository_storage_paths = ARGV
repository_storage_paths.each do |repo_path|
Dir["#{repo_path.chomp('/')}/**/*.git"].each do |repo|
begin
GitlabMetrics.measure('command-create-hooks') do
- GitlabProjects.create_hooks(repo)
+ create_hooks(repo)
end
rescue Errno::ENOENT
# The user must have deleted their repository. Ignore.