diff options
Diffstat (limited to 'bin/create-hooks')
-rwxr-xr-x | bin/create-hooks | 26 |
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. |