26 lines
		
	
	
		
			672 B
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			26 lines
		
	
	
		
			672 B
		
	
	
	
		
			Ruby
		
	
	
	
| namespace :gitlab do
 | |
|   namespace :git do
 | |
|     desc 'GitLab | Git | Check all repos integrity'
 | |
|     task fsck: :gitlab_environment do
 | |
|       failures = []
 | |
|       Project.find_each(batch_size: 100) do |project|
 | |
|         begin
 | |
|           project.repository.fsck
 | |
| 
 | |
|         rescue => e
 | |
|           failures << "#{project.full_path} on #{project.repository_storage}: #{e}"
 | |
|         end
 | |
| 
 | |
|         puts "Performed integrity check for #{project.repository.full_path}"
 | |
|       end
 | |
| 
 | |
|       if failures.empty?
 | |
|         puts "Done".color(:green)
 | |
|       else
 | |
|         puts "The following repositories reported errors:".color(:red)
 | |
|         failures.each { |f| puts "- #{f}" }
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| end
 |