Fix 500 error when MR from fork has conflicts but worker has not run
If the ref hasn't been fetched into the target repository yet, this will fail with a Rugged::ReferencError (assuming we're not using Gitaly). We should handle this in the same way as a missing ref.
This commit is contained in:
parent
ca330f7ea3
commit
30bca22d08
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
title: Fix 500 error when a merge request from a fork has conflicts and has not yet
|
||||
been updated
|
||||
merge_request:
|
||||
author:
|
||||
type: fixed
|
|
@ -23,7 +23,7 @@ module Gitlab
|
|||
end
|
||||
rescue GRPC::FailedPrecondition => e
|
||||
raise Gitlab::Git::Conflict::Resolver::ConflictSideMissing.new(e.message)
|
||||
rescue Rugged::OdbError, GRPC::BadStatus => e
|
||||
rescue Rugged::ReferenceError, Rugged::OdbError, GRPC::BadStatus => e
|
||||
raise Gitlab::Git::CommandError.new(e)
|
||||
end
|
||||
|
||||
|
|
|
@ -77,6 +77,14 @@ describe MergeRequests::Conflicts::ListService do
|
|||
expect(service.can_be_resolved_in_ui?).to be_falsey
|
||||
end
|
||||
|
||||
it 'returns a falsey value when the MR has a missing revision after a force push' do
|
||||
merge_request = create_merge_request('conflict-resolvable')
|
||||
service = conflicts_service(merge_request)
|
||||
allow(merge_request).to receive_message_chain(:target_branch_head, :raw, :id).and_return(Gitlab::Git::BLANK_SHA)
|
||||
|
||||
expect(service.can_be_resolved_in_ui?).to be_falsey
|
||||
end
|
||||
|
||||
context 'with gitaly disabled', :skip_gitaly_mock do
|
||||
it 'returns a falsey value when the MR has a missing ref after a force push' do
|
||||
merge_request = create_merge_request('conflict-resolvable')
|
||||
|
@ -85,6 +93,14 @@ describe MergeRequests::Conflicts::ListService do
|
|||
|
||||
expect(service.can_be_resolved_in_ui?).to be_falsey
|
||||
end
|
||||
|
||||
it 'returns a falsey value when the MR has a missing revision after a force push' do
|
||||
merge_request = create_merge_request('conflict-resolvable')
|
||||
service = conflicts_service(merge_request)
|
||||
allow(merge_request).to receive_message_chain(:target_branch_head, :raw, :id).and_return(Gitlab::Git::BLANK_SHA)
|
||||
|
||||
expect(service.can_be_resolved_in_ui?).to be_falsey
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue