Commit 1ba47de5 authored by Douwe Maan's avatar Douwe Maan

Merge branch '27456-improve-feedback-when-dev-cannot-push-to-empty-repo' into 'master'

Improve feedback when a developer cannot push in an empty repository

Closes #27456

See merge request gitlab-org/gitlab-ce!20519
parents c35089d6 65e5cf0a
---
title: Improve feedback when a developer is unable to push to an empty repository
merge_request: 20519
author:
type: changed
...@@ -93,7 +93,7 @@ module Gitlab ...@@ -93,7 +93,7 @@ module Gitlab
end end
else else
unless user_access.can_push_to_branch?(branch_name) unless user_access.can_push_to_branch?(branch_name)
raise GitAccess::UnauthorizedError, ERROR_MESSAGES[:push_protected_branch] raise GitAccess::UnauthorizedError, push_to_protected_branch_rejected_message
end end
end end
end end
...@@ -140,6 +140,29 @@ module Gitlab ...@@ -140,6 +140,29 @@ module Gitlab
private private
def push_to_protected_branch_rejected_message
if project.empty_repo?
empty_project_push_message
else
ERROR_MESSAGES[:push_protected_branch]
end
end
def empty_project_push_message
<<~MESSAGE
A default branch (e.g. master) does not yet exist for #{project.full_path}
Ask a project Owner or Maintainer to create a default branch:
#{project_members_url}
MESSAGE
end
def project_members_url
Gitlab::Routing.url_helpers.project_project_members_url(project)
end
def should_run_commit_validations? def should_run_commit_validations?
commit_check.validate_lfs_file_locks? commit_check.validate_lfs_file_locks?
end end
......
...@@ -132,6 +132,16 @@ describe Gitlab::Checks::ChangeAccess do ...@@ -132,6 +132,16 @@ describe Gitlab::Checks::ChangeAccess do
expect { subject.exec }.to raise_error(Gitlab::GitAccess::UnauthorizedError, 'You are not allowed to push code to protected branches on this project.') expect { subject.exec }.to raise_error(Gitlab::GitAccess::UnauthorizedError, 'You are not allowed to push code to protected branches on this project.')
end end
context 'when project repository is empty' do
let(:project) { create(:project) }
it 'raises an error if the user is not allowed to push to protected branches' do
expect(user_access).to receive(:can_push_to_branch?).and_return(false)
expect { subject.exec }.to raise_error(Gitlab::GitAccess::UnauthorizedError, /Ask a project Owner or Maintainer to create a default branch/)
end
end
context 'branch deletion' do context 'branch deletion' do
let(:newrev) { '0000000000000000000000000000000000000000' } let(:newrev) { '0000000000000000000000000000000000000000' }
let(:ref) { 'refs/heads/feature' } let(:ref) { 'refs/heads/feature' }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment