Deleted files will often not show up in a diff view
Reposting of internal issue https://dev.gitlab.org/gitlab/gitlabhq/issues/2206
See GitHub's compare vs. GitLab's.
I dug into this a bit in the internal issue, but didn't get very far:
Looked into this a bit. First, @douwe's point:
Oddly, this isn't always the case. In an MR to a private project of mine, the deleted files are very much visible in the diff. I'll investigate for 7.11.
I found out that deleted files will show up in the diff view only when the commit that deleted them is the current
HEAD
.At the top of app/views/projects/diffs/_file.html.haml is this:
- blob = project.repository.blob_for_diff(@commit, diff_file.diff) - return unless blob
So when
blob_for_diff
can get a valid blob from the diff file, the deleted file renders, otherwise it returns early.Here's an example:
To create this I:
- Added an image.
- Pushed to the branch
create-image
- Forked that branch to
delete-image
- Deleted the image.
- Pushed to
delete-image
At this point, comparing the two branches correctly showed the deleted image. Then I:
- Switched back to
create-image
- Added a text file
- Pushed to
create-image
- Checked out
delete-image
- Rebased on
create-image
- Deleted the text file.
- Force pushed to
delete-image
Now the compare view shows the deleted text file, but not the deleted image.
I'm not really familiar enough with all of our Git internals to work around this behavior.