diff --git a/app/models/environment.rb b/app/models/environment.rb index e9ebf0637f39671a9fc9aa4f6814df369c9d86a4..435eeaf0e2ebf6f9c0207962b045ee934c848e59 100644 --- a/app/models/environment.rb +++ b/app/models/environment.rb @@ -114,7 +114,7 @@ class Environment < ActiveRecord::Base end def ref_path - "refs/environments/#{Shellwords.shellescape(name)}" + "refs/#{Repository::REF_ENVIRONMENTS}/#{Shellwords.shellescape(name)}" end def formatted_external_url diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index f028d2395c10b4310dfa39a0078a2027d2cce20c..8361039f3018c2a884342ca2c0930d7f471cb377 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -797,7 +797,7 @@ class MergeRequest < ActiveRecord::Base end def ref_path - "refs/merge-requests/#{iid}/head" + "refs/#{Repository::REF_MERGE_REQUEST}/#{iid}/head" end def ref_fetched? diff --git a/app/models/repository.rb b/app/models/repository.rb index c1e4fcf94a442a4dae051c451556ec4fd868e701..c247fb840ceb563d1fcf72675ecc56215570fe3c 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -1,6 +1,18 @@ require 'securerandom' class Repository + REF_MERGE_REQUEST = 'merge-requests' + REF_KEEP_AROUND = 'keep-around' + REF_ENVIRONMENTS = 'environments' + + RESERVED_REFS_NAMES = %W[ + heads + tags + #{REF_ENVIRONMENTS} + #{REF_KEEP_AROUND} + #{REF_ENVIRONMENTS} + ].freeze + include Gitlab::ShellAdapter include RepositoryMirroring @@ -228,10 +240,10 @@ class Repository begin write_ref(keep_around_ref_name(sha), sha) rescue Rugged::ReferenceError => ex - Rails.logger.error "Unable to create keep-around reference for repository #{path}: #{ex}" + Rails.logger.error "Unable to create #{REF_KEEP_AROUND} reference for repository #{path}: #{ex}" rescue Rugged::OSError => ex raise unless ex.message =~ /Failed to create locked file/ && ex.message =~ /File exists/ - Rails.logger.error "Unable to create keep-around reference for repository #{path}: #{ex}" + Rails.logger.error "Unable to create #{REF_KEEP_AROUND} reference for repository #{path}: #{ex}" end end @@ -1152,7 +1164,7 @@ class Repository end def keep_around_ref_name(sha) - "refs/keep-around/#{sha}" + "refs/#{REF_KEEP_AROUND}/#{sha}" end def repository_event(event, tags = {}) diff --git a/app/services/projects/after_import_service.rb b/app/services/projects/after_import_service.rb index bbada7e2b1c395f5dd2380d461d5be4e4f9406c3..107856885f3b2b737f043c3ddb8ccab858ad358b 100644 --- a/app/services/projects/after_import_service.rb +++ b/app/services/projects/after_import_service.rb @@ -1,10 +1,7 @@ module Projects class AfterImportService - RESERVED_REFS_NAMES = - %w[heads tags merge-requests keep-around environments].freeze - RESERVED_REFS_REGEXP = - %r{\Arefs/(?:#{Regexp.union(*RESERVED_REFS_NAMES)})/} + %r{\Arefs/(?:#{Regexp.union(*Repository::RESERVED_REFS_NAMES)})/} def initialize(project) @project = project diff --git a/spec/services/projects/after_import_service_spec.rb b/spec/services/projects/after_import_service_spec.rb index 540d2191b2d0b561ac51ab264bdee504a1627f87..c6678fc1f5cf8ff8058d1df1df9eb10ded439ff3 100644 --- a/spec/services/projects/after_import_service_spec.rb +++ b/spec/services/projects/after_import_service_spec.rb @@ -37,7 +37,7 @@ describe Projects::AfterImportService do end end - described_class::RESERVED_REFS_NAMES.each do |name| + Repository::RESERVED_REFS_NAMES.each do |name| context "with a ref in refs/#{name}/tmp" do before do repository.write_ref("refs/#{name}/tmp", sha)