add locks chek
This commit is contained in:
parent
bc46c822fc
commit
f8e1b44dc5
2 changed files with 28 additions and 2 deletions
|
@ -32,7 +32,10 @@ namespace :gitlab do
|
|||
|
||||
desc 'GitLab | Git | Check all repos integrity'
|
||||
task fsck: :environment do
|
||||
failures = perform_git_cmd(%W(#{Gitlab.config.git.bin_path} fsck --name-objects --no-progress), "Checking integrity")
|
||||
failures = perform_git_cmd(%W(#{Gitlab.config.git.bin_path} fsck --name-objects --no-progress), "Checking integrity") do |repo|
|
||||
check_config_lock(repo)
|
||||
check_ref_locks(repo)
|
||||
end
|
||||
if failures.empty?
|
||||
puts "Done".color(:green)
|
||||
else
|
||||
|
@ -50,6 +53,8 @@ namespace :gitlab do
|
|||
else
|
||||
failures << repo
|
||||
end
|
||||
|
||||
yield(repo) if block_given?
|
||||
end
|
||||
|
||||
failures
|
||||
|
@ -59,5 +64,24 @@ namespace :gitlab do
|
|||
puts "The following repositories reported errors:".color(:red)
|
||||
failures.each { |f| puts "- #{f}" }
|
||||
end
|
||||
|
||||
def check_config_lock(repo_dir)
|
||||
config_exists = File.exist?(File.join(repo_dir, 'config.lock'))
|
||||
config_output = config_exists ? 'yes'.color(:red) : 'no'.color(:green)
|
||||
|
||||
puts "'config.lock' file exists?".color(:yellow) + " ... #{config_output}"
|
||||
end
|
||||
|
||||
def check_ref_locks(repo_dir)
|
||||
lock_files = Dir.glob(File.join(repo_dir, 'refs/heads/*.lock'))
|
||||
|
||||
if lock_files.present?
|
||||
puts "Ref lock files exist:".color(:red)
|
||||
|
||||
lock_files.each { |lock_file| puts " #{lock_file}" }
|
||||
else
|
||||
puts "No ref lock files exist".color(:green)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
|
||||
|
||||
require 'rake_helper'
|
||||
|
||||
describe 'gitlab:git rake tasks' do
|
||||
|
@ -6,7 +8,7 @@ describe 'gitlab:git rake tasks' do
|
|||
|
||||
storages = { 'default' => { 'path' => Settings.absolute('tmp/tests/default_storage') } }
|
||||
|
||||
FileUtils.mkdir_p(Settings.absolute('tmp/tests/default_storage/repo/test.git'))
|
||||
FileUtils.mkdir_p(Settings.absolute('tmp/tests/default_storage/@repo/1/2/test.git'))
|
||||
allow(Gitlab.config.repositories).to receive(:storages).and_return(storages)
|
||||
stub_warn_user_is_not_gitlab
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue