diff options
Diffstat (limited to 'app/helpers/diff_helper.rb')
-rw-r--r-- | app/helpers/diff_helper.rb | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/app/helpers/diff_helper.rb b/app/helpers/diff_helper.rb index 522593dd487..71c8296ad2e 100644 --- a/app/helpers/diff_helper.rb +++ b/app/helpers/diff_helper.rb @@ -225,6 +225,23 @@ module DiffHelper end end + def conflicts(allow_tree_conflicts: false) + return unless options[:merge_ref_head_diff] + + conflicts_service = MergeRequests::Conflicts::ListService.new(merge_request, allow_tree_conflicts: allow_tree_conflicts) # rubocop:disable CodeReuse/ServiceClass + + return unless allow_tree_conflicts || conflicts_service.can_be_resolved_in_ui? + + conflicts_service.conflicts.files.index_by(&:path) + rescue Gitlab::Git::Conflict::Resolver::ConflictSideMissing + # This exception is raised when changes on a fork isn't present on canonical repo yet. + # We can't list conflicts until the canonical repo gets the references from the fork + # which happens asynchronously when updating MR. + # + # Return empty hash to indicate that there are no conflicts. + {} + end + private def diff_btn(title, name, selected) @@ -271,16 +288,6 @@ module DiffHelper Gitlab::CodeNavigationPath.new(merge_request.project, merge_request.diff_head_sha) end - def conflicts(allow_tree_conflicts: false) - return unless options[:merge_ref_head_diff] - - conflicts_service = MergeRequests::Conflicts::ListService.new(merge_request, allow_tree_conflicts: allow_tree_conflicts) # rubocop:disable CodeReuse/ServiceClass - - return unless allow_tree_conflicts || conflicts_service.can_be_resolved_in_ui? - - conflicts_service.conflicts.files.index_by(&:path) - end - def log_overflow_limits(diff_files:, collection_overflow:) if diff_files.any?(&:too_large?) Gitlab::Metrics.add_event(:diffs_overflow_single_file_limits) |