diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb index fcc6384e27cd043f99764913d940c9a7910947cd..3f0833303ab9839c8a5cb4541b47bfd0d8a41a04 100644 --- a/app/controllers/projects/merge_requests_controller.rb +++ b/app/controllers/projects/merge_requests_controller.rb @@ -70,7 +70,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController @target_project = merge_request.target_project @source_project = merge_request.source_project @commits = @merge_request.compare_commits - @commit = @merge_request.compare_base_commit + @commit = @merge_request.compare_commits.last @diffs = @merge_request.compare_diffs @note_counts = Note.where(commit_id: @commits.map(&:id)). group(:commit_id).count diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index 686add63bbfd829b19e8232a0b326f0439b23613..83dafe9323366d3dfb9164dfed674512c4735a39 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -44,7 +44,7 @@ class MergeRequest < ActiveRecord::Base # Temporary fields to store compare vars # when creating new merge request - attr_accessor :can_be_created, :compare_failed, :compare_base_commit, + attr_accessor :can_be_created, :compare_failed, :compare_commits, :compare_diffs ActsAsTaggableOn.strict_case_match = true diff --git a/app/models/repository.rb b/app/models/repository.rb index 2ff70c248dc85cac0de2208e967baf7a543cc190..d9b0d1fbe222153ea470a54e4bba78210919684f 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -263,4 +263,20 @@ class Repository contributor end end + + def blob_for_diff(commit, diff) + file = blob_at(commit.id, diff.new_path) + + unless file + file = prev_blob_for_diff(commit, diff) + end + + file + end + + def prev_blob_for_diff(commit, diff) + if commit.parent_id + blob_at(commit.parent_id, diff.old_path) + end + end end diff --git a/app/services/merge_requests/build_service.rb b/app/services/merge_requests/build_service.rb index 466ed1c17603757a000cef1dff7c9b0770f38a25..81dd88873959bb4211b9dc226498992d990e71f2 100644 --- a/app/services/merge_requests/build_service.rb +++ b/app/services/merge_requests/build_service.rb @@ -34,7 +34,6 @@ module MergeRequests # If we have at least one commit to merge -> creation allowed if commits.present? merge_request.compare_commits = Commit.decorate(commits) - merge_request.compare_base_commit = Commit.new(commits.first) merge_request.can_be_created = true merge_request.compare_failed = false diff --git a/app/views/projects/commits/_diff_file.html.haml b/app/views/projects/commits/_diff_file.html.haml index 45d1cd9c9a0981d9d04065528b6097c3a8d056fc..9cbcb84aead8b4e393e2984b89e43ed1d5b6c19b 100644 --- a/app/views/projects/commits/_diff_file.html.haml +++ b/app/views/projects/commits/_diff_file.html.haml @@ -1,5 +1,4 @@ -- file = project.repository.blob_at(@commit.id, diff.new_path) -- file = project.repository.blob_at(@commit.parent_id, diff.old_path) unless file +- file = project.repository.blob_for_diff(@commit, diff) - return unless file .diff-file{id: "diff-#{i}"} .diff-header{id: "file-path-#{hexdigest(diff.new_path || diff.old_path)}"} @@ -41,7 +40,7 @@ - else = render "projects/commits/text_file", diff: diff, index: i - elsif file.image? - - old_file = project.repository.blob_at(@commit.parent_id, diff.old_path) if @commit.parent_id + - old_file = project.repository.prev_blob_for_diff(@commit, diff) = render "projects/commits/image", diff: diff, old_file: old_file, file: file, index: i - else .nothing-here-block No preview for this file type