diff --git a/app/models/repository.rb b/app/models/repository.rb index e5c92fe1f94575f8a9475912584b69d0d31bb813..ad5f4031a4d1b026d9b283de01d03fc0063d1cc6 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -1239,7 +1239,7 @@ def cache def remove_prohibited_branches return unless exists? - prohibited_branches = raw_repository.branch_names.select { |name| name.match(/\A\h{40}\z/) } + prohibited_branches = raw_repository.branch_names.select { |name| name.match(Gitlab::Git::COMMIT_ID) } return if prohibited_branches.blank? diff --git a/spec/models/repository_spec.rb b/spec/models/repository_spec.rb index a922fb8430b06e7adefcee76ff0e5cd8ae0436f8..6e64958679eaa186d7fb24b15bdc8508cae74611 100644 --- a/spec/models/repository_spec.rb +++ b/spec/models/repository_spec.rb @@ -3789,7 +3789,7 @@ def update_storages(storage_hash) allow(repository.raw_repository).to receive(:branch_names).and_return([branch_name]) end - context 'when prohibited branch exists' do + shared_examples 'deletes the branch' do it 'deletes prohibited branch' do expect(repository.raw_repository).to receive(:delete_branch).with(branch_name) @@ -3805,6 +3805,16 @@ def update_storages(storage_hash) end end + context 'when branch name is hexadecmal and 40-characters long' do + include_examples 'deletes the branch' + end + + context 'when branch name is hexadecmal and 64-characters long' do + let(:branch_name) { '5f50b1461c836081ed677f05e08d10dc7dc68631fa5767bc3e3946349b348275' } + + include_examples 'deletes the branch' + end + context 'when branch name is 40-characters long but not hexadecimal' do let(:branch_name) { '37fd3601be4c25497a39fa2e6a206e09e759d59s' }