summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean McGivern <sean@gitlab.com>2016-07-11 18:17:00 +0100
committerSean McGivern <sean@gitlab.com>2016-07-11 18:17:00 +0100
commit8ee3c28bcde45e0719e0ef76731b9c92edfcddd9 (patch)
tree243253a2c31776cae90abc3791b3eabc77edf57e
parent93ab68607922e0bd0e22c40528a9d58fc50f50cd (diff)
downloadgitlab-ce-8ee3c28bcde45e0719e0ef76731b9c92edfcddd9.tar.gz
Handle more than two paths in MergeRequest#diffs
-rw-r--r--app/controllers/concerns/diff_for_path.rb4
-rw-r--r--app/models/merge_request_diff.rb5
2 files changed, 5 insertions, 4 deletions
diff --git a/app/controllers/concerns/diff_for_path.rb b/app/controllers/concerns/diff_for_path.rb
index 5ca8d3af0c9..e09b8789eb2 100644
--- a/app/controllers/concerns/diff_for_path.rb
+++ b/app/controllers/concerns/diff_for_path.rb
@@ -2,7 +2,9 @@ module DiffForPath
extend ActiveSupport::Concern
def render_diff_for_path(diffs, diff_refs, project)
- diff_file = safe_diff_files(diffs, diff_refs: diff_refs, repository: project.repository).first
+ diff_file = safe_diff_files(diffs, diff_refs: diff_refs, repository: project.repository).find do |diff|
+ diff.old_path == params[:old_path] && diff.new_path == params[:new_path]
+ end
return render_404 unless diff_file
diff --git a/app/models/merge_request_diff.rb b/app/models/merge_request_diff.rb
index d54369c3483..feaba925bad 100644
--- a/app/models/merge_request_diff.rb
+++ b/app/models/merge_request_diff.rb
@@ -145,10 +145,9 @@ class MergeRequestDiff < ActiveRecord::Base
def load_diffs(raw, options)
if raw.respond_to?(:each)
- if options[:paths]
- old_path, new_path = options[:paths]
+ if paths = options[:paths]
raw = raw.select do |diff|
- old_path == diff[:old_path] && new_path == diff[:new_path]
+ paths.include?(diff[:old_path]) || paths.include?(diff[:new_path])
end
end