Stop MR conflict code from blowing up when branches are missing
This commit is contained in:
parent
b46b52af37
commit
7a7e9288d4
|
@ -293,6 +293,8 @@ class MergeRequest < ActiveRecord::Base
|
||||||
attr_writer :target_branch_sha, :source_branch_sha
|
attr_writer :target_branch_sha, :source_branch_sha
|
||||||
|
|
||||||
def source_branch_head
|
def source_branch_head
|
||||||
|
return unless source_project
|
||||||
|
|
||||||
source_branch_ref = @source_branch_sha || source_branch
|
source_branch_ref = @source_branch_sha || source_branch
|
||||||
source_project.repository.commit(source_branch_ref) if source_branch_ref
|
source_project.repository.commit(source_branch_ref) if source_branch_ref
|
||||||
end
|
end
|
||||||
|
|
|
@ -15,6 +15,7 @@ module MergeRequests
|
||||||
|
|
||||||
return @conflicts_can_be_resolved_in_ui = false unless merge_request.cannot_be_merged?
|
return @conflicts_can_be_resolved_in_ui = false unless merge_request.cannot_be_merged?
|
||||||
return @conflicts_can_be_resolved_in_ui = false unless merge_request.has_complete_diff_refs?
|
return @conflicts_can_be_resolved_in_ui = false unless merge_request.has_complete_diff_refs?
|
||||||
|
return @conflicts_can_be_resolved_in_ui = false if merge_request.branch_missing?
|
||||||
|
|
||||||
begin
|
begin
|
||||||
# Try to parse each conflict. If the MR's mergeable status hasn't been
|
# Try to parse each conflict. If the MR's mergeable status hasn't been
|
||||||
|
|
|
@ -16,7 +16,7 @@ module Gitlab
|
||||||
end
|
end
|
||||||
|
|
||||||
def trace(old_position)
|
def trace(old_position)
|
||||||
return unless old_diff_refs.complete? && new_diff_refs.complete?
|
return unless old_diff_refs&.complete? && new_diff_refs&.complete?
|
||||||
return unless old_position.diff_refs == old_diff_refs
|
return unless old_position.diff_refs == old_diff_refs
|
||||||
|
|
||||||
# Suppose we have an MR with source branch `feature` and target branch `master`.
|
# Suppose we have an MR with source branch `feature` and target branch `master`.
|
||||||
|
|
|
@ -25,6 +25,13 @@ describe MergeRequests::Conflicts::ListService do
|
||||||
expect(conflicts_service(merge_request).can_be_resolved_in_ui?).to be_falsey
|
expect(conflicts_service(merge_request).can_be_resolved_in_ui?).to be_falsey
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'returns a falsey value when one of the MR branches is missing' do
|
||||||
|
merge_request = create_merge_request('conflict-resolvable')
|
||||||
|
merge_request.project.repository.rm_branch(merge_request.author, 'conflict-resolvable')
|
||||||
|
|
||||||
|
expect(conflicts_service(merge_request).can_be_resolved_in_ui?).to be_falsey
|
||||||
|
end
|
||||||
|
|
||||||
it 'returns a falsey value when the MR has a missing ref after a force push' 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')
|
merge_request = create_merge_request('conflict-resolvable')
|
||||||
service = conflicts_service(merge_request)
|
service = conflicts_service(merge_request)
|
||||||
|
|
Loading…
Reference in New Issue