diff --git a/lib/tasks/gitlab/check.rake b/lib/tasks/gitlab/check.rake index 9ea5c55abd694e8f9853d39fbd974233dca090bd..248b567d007f182be4150e7154fa3e849c428104 100644 --- a/lib/tasks/gitlab/check.rake +++ b/lib/tasks/gitlab/check.rake @@ -356,8 +356,7 @@ namespace :gitlab do check_repo_base_user_and_group check_repo_base_permissions check_satellites_permissions - check_update_hook_is_up_to_date - check_repos_update_hooks_is_link + check_repos_hooks_directory_is_link check_gitlab_shell_self_test finished_checking "GitLab Shell" @@ -367,29 +366,6 @@ namespace :gitlab do # Checks ######################## - - def check_update_hook_is_up_to_date - print "update hook up-to-date? ... " - - hook_file = "update" - gitlab_shell_hooks_path = Gitlab.config.gitlab_shell.hooks_path - gitlab_shell_hook_file = File.join(gitlab_shell_hooks_path, hook_file) - - if File.exists?(gitlab_shell_hook_file) - puts "yes".green - else - puts "no".red - puts "Could not find #{gitlab_shell_hook_file}" - try_fixing_it( - 'Check the hooks_path in config/gitlab.yml', - 'Check your gitlab-shell installation' - ) - for_more_information( - see_installation_guide_section "GitLab Shell" - ) - end - end - def check_repo_base_exists print "Repo base directory exists? ... " @@ -508,18 +484,10 @@ namespace :gitlab do end end - def check_repos_update_hooks_is_link - print "update hooks in repos are links: ... " + def check_repos_hooks_directory_is_link + print "hooks directories in repos are links: ... " - hook_file = "update" gitlab_shell_hooks_path = Gitlab.config.gitlab_shell.hooks_path - gitlab_shell_hook_file = File.join(gitlab_shell_hooks_path, hook_file) - gitlab_shell_ssh_user = Gitlab.config.gitlab_shell.ssh_user - - unless File.exists?(gitlab_shell_hook_file) - puts "can't check because of previous errors".magenta - return - end unless Project.count > 0 puts "can't check, you have no projects".magenta @@ -529,38 +497,25 @@ namespace :gitlab do Project.find_each(batch_size: 100) do |project| print sanitized_message(project) + project_hook_directory = File.join(project.repository.path_to_repo, "hooks") if project.empty_repo? puts "repository is empty".magenta + elsif File.realpath(project_hook_directory) == File.realpath(gitlab_shell_hooks_path) + puts 'ok'.green else - project_hook_file = File.join(project.repository.path_to_repo, "hooks", hook_file) - - unless File.exists?(project_hook_file) - puts "missing".red - try_fixing_it( - "sudo -u #{gitlab_shell_ssh_user} ln -sf #{gitlab_shell_hook_file} #{project_hook_file}" - ) - for_more_information( - "#{gitlab_shell_path}/bin/create-hooks" - ) - fix_and_rerun - next - end - - if File.lstat(project_hook_file).symlink? && - File.realpath(project_hook_file) == File.realpath(gitlab_shell_hook_file) - puts "ok".green - else - puts "not a link to GitLab Shell's hook".red - try_fixing_it( - "sudo -u #{gitlab_shell_ssh_user} ln -sf #{gitlab_shell_hook_file} #{project_hook_file}" - ) - for_more_information( - "#{gitlab_shell_path}/bin/create-hooks" - ) - fix_and_rerun - end + puts "wrong or missing hooks".red + try_fixing_it( + sudo_gitlab("#{gitlab_shell_path}/bin/create-hooks"), + 'Check the hooks_path in config/gitlab.yml', + 'Check your gitlab-shell installation' + ) + for_more_information( + see_installation_guide_section "GitLab Shell" + ) + fix_and_rerun end + end end