Skip to content

Commit 4a3d1a5

Browse files
committed
Handle case where conflicts aren't on disk yet
1 parent 7bbb523 commit 4a3d1a5

File tree

3 files changed

+19
-1
lines changed

3 files changed

+19
-1
lines changed

app/models/merge_request.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -778,7 +778,7 @@ def conflicts_can_be_resolved_in_ui?
778778

779779
begin
780780
@conflicts_can_be_resolved_in_ui = conflicts.files.each(&:lines)
781-
rescue Gitlab::Conflict::Parser::ParserError, Gitlab::Conflict::FileCollection::ConflictSideMissing
781+
rescue Rugged::OdbError, Gitlab::Conflict::Parser::ParserError, Gitlab::Conflict::FileCollection::ConflictSideMissing
782782
@conflicts_can_be_resolved_in_ui = false
783783
end
784784
end

lib/gitlab/conflict/file.rb

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,17 @@ def as_json(opts = nil)
181181
sections: sections
182182
}
183183
end
184+
185+
# Don't try to print merge_request or repository.
186+
def inspect
187+
instance_variables = [:merge_file_result, :their_path, :our_path, :our_mode].map do |instance_variable|
188+
value = instance_variable_get("@#{instance_variable}")
189+
190+
"#{instance_variable}=\"#{value}\""
191+
end
192+
193+
"#<#{self.class} #{instance_variables.join(' ')}>"
194+
end
184195
end
185196
end
186197
end

spec/models/merge_request_spec.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -890,6 +890,13 @@ def create_merge_request(source_branch)
890890
expect(merge_request.conflicts_can_be_resolved_in_ui?).to be_falsey
891891
end
892892

893+
it 'returns a falsey value when the MR has a missing ref after a force push' do
894+
merge_request = create_merge_request('conflict-resolvable')
895+
allow(merge_request.conflicts).to receive(:merge_index).and_raise(Rugged::OdbError)
896+
897+
expect(merge_request.conflicts_can_be_resolved_in_ui?).to be_falsey
898+
end
899+
893900
it 'returns a falsey value when the MR does not support new diff notes' do
894901
merge_request = create_merge_request('conflict-resolvable')
895902
merge_request.merge_request_diff.update_attributes(start_commit_sha: nil)

0 commit comments

Comments
 (0)