Fix bug when removed file was not appearing in merge request diff

Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
This commit is contained in:
Dmitriy Zaporozhets 2015-09-30 12:31:02 +02:00
parent 34431d8ecb
commit fe7e97320c
No known key found for this signature in database
GPG key ID: 161B5D6A44D3D88A
4 changed files with 34 additions and 15 deletions

View file

@ -17,6 +17,7 @@ v 8.1.0 (unreleased)
- Move CI variables page to project settings area - Move CI variables page to project settings area
- Move CI triggers page to project settings area - Move CI triggers page to project settings area
- Move CI project settings page to CE project settings area - Move CI project settings page to CE project settings area
- Fix bug when removed file was not appearing in merge request diff
v 8.0.3 v 8.0.3
- Fix URL shown in Slack notifications - Fix URL shown in Slack notifications

View file

@ -167,4 +167,23 @@ module DiffHelper
content_tag(:span, commit_id, class: 'monospace'), content_tag(:span, commit_id, class: 'monospace'),
].join(' ').html_safe ].join(' ').html_safe
end end
def commit_for_diff(diff)
if diff.deleted_file
@merge_request ? @merge_request.commits.last : @commit.parent_id
else
@commit
end
end
def diff_file_html_data(project, diff_commit, diff_file)
{
blob_diff_path: namespace_project_blob_diff_path(project.namespace, project,
tree_join(diff_commit.id, diff_file.file_path))
}
end
def editable_diff?(diff)
!diff.deleted_file && @merge_request && @merge_request.source_project
end
end end

View file

@ -15,7 +15,12 @@
.files .files
- diff_files.each_with_index do |diff_file, index| - diff_files.each_with_index do |diff_file, index|
= render 'projects/diffs/file', diff_file: diff_file, i: index, project: project - diff_commit = commit_for_diff(diff_file.diff)
- blob = project.repository.blob_for_diff(diff_commit, diff_file.diff)
- next unless blob
= render 'projects/diffs/file', i: index, project: project,
diff_file: diff_file, diff_commit: diff_commit, blob: blob
- if @diff_timeout - if @diff_timeout
.alert.alert-danger .alert.alert-danger

View file

@ -1,24 +1,18 @@
- blob = project.repository.blob_for_diff(@commit, diff_file.diff) .diff-file{id: "diff-#{i}", data: diff_file_html_data(project, diff_commit, diff_file)}
- return unless blob
- blob_diff_path = namespace_project_blob_diff_path(project.namespace, project, tree_join(@commit.id, diff_file.file_path))
.diff-file{id: "diff-#{i}", data: {blob_diff_path: blob_diff_path }}
.diff-header{id: "file-path-#{hexdigest(diff_file.new_path || diff_file.old_path)}"} .diff-header{id: "file-path-#{hexdigest(diff_file.new_path || diff_file.old_path)}"}
- if diff_file.deleted_file - if diff_file.diff.submodule?
%span="#{diff_file.old_path} deleted"
.diff-btn-group
- if @commit.parent_ids.present?
= view_file_btn(@commit.parent_id, diff_file, project)
- elsif diff_file.diff.submodule?
%span %span
- submodule_item = project.repository.blob_at(@commit.id, diff_file.file_path) - submodule_item = project.repository.blob_at(@commit.id, diff_file.file_path)
= submodule_link(submodule_item, @commit.id, project.repository) = submodule_link(submodule_item, @commit.id, project.repository)
- else - else
%span %span
- if diff_file.renamed_file - if diff_file.deleted_file
= "#{diff_file.old_path} deleted"
- elsif diff_file.renamed_file
= "#{diff_file.old_path} renamed to #{diff_file.new_path}" = "#{diff_file.old_path} renamed to #{diff_file.new_path}"
- else - else
= diff_file.new_path = diff_file.new_path
- if diff_file.mode_changed? - if diff_file.mode_changed?
%span.file-mode= "#{diff_file.diff.a_mode} → #{diff_file.diff.b_mode}" %span.file-mode= "#{diff_file.diff.a_mode} → #{diff_file.diff.b_mode}"
@ -28,12 +22,12 @@
%i.fa.fa-comments %i.fa.fa-comments
&nbsp; &nbsp;
- if @merge_request && @merge_request.source_project - if editable_diff?(diff_file)
= edit_blob_link(@merge_request.source_project, = edit_blob_link(@merge_request.source_project,
@merge_request.source_branch, diff_file.new_path, @merge_request.source_branch, diff_file.new_path,
after: '&nbsp;', from_merge_request_id: @merge_request.id) after: '&nbsp;', from_merge_request_id: @merge_request.id)
= view_file_btn(@commit.id, diff_file, project) = view_file_btn(diff_commit.id, diff_file, project)
.diff-content.diff-wrap-lines .diff-content.diff-wrap-lines
-# Skipp all non non-supported blobs -# Skipp all non non-supported blobs