Skip to content
Snippets Groups Projects
Commit 0187018e authored by Jacob Vosmaer (GitLab)'s avatar Jacob Vosmaer (GitLab) Committed by Douwe Maan
Browse files

Simplify Git interactions in AfterImportService

parent 7d3e888d
No related branches found
No related tags found
No related merge requests found
module Projects
class AfterImportService
RESERVED_REFS_REGEXP =
%r{\Arefs/(?:#{Regexp.union(*Repository::RESERVED_REFS_NAMES)})/}
RESERVED_REF_PREFIXES = Repository::RESERVED_REFS_NAMES.map { |n| File.join('refs', n, '/') }
 
def initialize(project)
@project = project
Loading
Loading
@@ -9,7 +8,7 @@ module Projects
 
def execute
Projects::HousekeepingService.new(@project).execute do
repository.delete_refs(*garbage_refs)
repository.delete_all_refs_except(RESERVED_REF_PREFIXES)
end
rescue Projects::HousekeepingService::LeaseTaken => e
Rails.logger.info(
Loading
Loading
@@ -18,10 +17,6 @@ module Projects
 
private
 
def garbage_refs
@garbage_refs ||= repository.all_ref_names_except(RESERVED_REFS_REGEXP)
end
def repository
@repository ||= @project.repository
end
Loading
Loading
Loading
Loading
@@ -250,11 +250,17 @@ module Gitlab
branch_names + tag_names
end
 
def delete_all_refs_except(prefixes)
delete_refs(*all_ref_names_except(prefixes))
end
# Returns an Array of all ref names, except when it's matching pattern
#
# regexp - The pattern for ref names we don't want
def all_ref_names_except(regexp)
rugged.references.reject { |ref| ref.name =~ regexp }.map(&:name)
def all_ref_names_except(prefixes)
rugged.references.reject do |ref|
prefixes.any? { |p| ref.name.start_with?(p) }
end.map(&:name)
end
 
# Discovers the default branch based on the repository's available branches
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment