diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2022-06-16 09:08:59 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2022-06-16 09:08:59 +0300 |
commit | 06bcbc77e472a70b8332150a941539c55953ef2b (patch) | |
tree | 903ff19991a3c3234626b1e86827a42063eeac61 /app/helpers/diff_helper.rb | |
parent | 1325f8cf2dce0f24403ea27c4ee58afd51fa3a8e (diff) |
Add latest changes from gitlab-org/gitlab@master
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) |