Skip to content
Snippets Groups Projects
Commit 7a7e9288 authored by Douwe Maan's avatar Douwe Maan
Browse files

Stop MR conflict code from blowing up when branches are missing

parent b46b52af
No related branches found
No related tags found
2 merge requests!12073Add RC2 changes to 9-3-stable,!11501Stop MR conflict code from blowing up when branches are missing
Pipeline #
Loading
Loading
@@ -293,6 +293,8 @@ class MergeRequest < ActiveRecord::Base
attr_writer :target_branch_sha, :source_branch_sha
 
def source_branch_head
return unless source_project
source_branch_ref = @source_branch_sha || source_branch
source_project.repository.commit(source_branch_ref) if source_branch_ref
end
Loading
Loading
Loading
Loading
@@ -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.has_complete_diff_refs?
return @conflicts_can_be_resolved_in_ui = false if merge_request.branch_missing?
 
begin
# Try to parse each conflict. If the MR's mergeable status hasn't been
Loading
Loading
Loading
Loading
@@ -16,7 +16,7 @@ module Gitlab
end
 
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
 
# Suppose we have an MR with source branch `feature` and target branch `master`.
Loading
Loading
Loading
Loading
@@ -25,6 +25,13 @@ describe MergeRequests::Conflicts::ListService do
expect(conflicts_service(merge_request).can_be_resolved_in_ui?).to be_falsey
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
merge_request = create_merge_request('conflict-resolvable')
service = conflicts_service(merge_request)
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment