diff options
author | Adam Niedzielski <adamsunday@gmail.com> | 2016-11-16 11:33:20 +0100 |
---|---|---|
committer | Adam Niedzielski <adamsunday@gmail.com> | 2016-11-16 11:33:20 +0100 |
commit | f913170e2f76ef44800f0272cb7fb40b9d6709ee (patch) | |
tree | 6a8a0c57de23b9bb28899b0582295a9db459cc96 /app/services | |
parent | 37abb20cec2a9836a7d1d70a7f7535af6646df1e (diff) | |
download | gitlab-ce-f913170e2f76ef44800f0272cb7fb40b9d6709ee.tar.gz |
Do not create a MergeRequestDiff record when source branch is deletedfix-merge-request-screen-deleted-source-branch
In order to have a valid MergeRequestDiff record when need head_commit_sha.
When a source branch is deleted head_commit_sha is nil.
This causes an exception in merge request "Changes" tab.
Diffstat (limited to 'app/services')
-rw-r--r-- | app/services/merge_requests/refresh_service.rb | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/app/services/merge_requests/refresh_service.rb b/app/services/merge_requests/refresh_service.rb index 22596b4014a..4a7e6930842 100644 --- a/app/services/merge_requests/refresh_service.rb +++ b/app/services/merge_requests/refresh_service.rb @@ -60,15 +60,7 @@ module MergeRequests merge_requests = filter_merge_requests(merge_requests) merge_requests.each do |merge_request| - if merge_request.source_branch == @branch_name || force_push? - merge_request.reload_diff - else - mr_commit_ids = merge_request.commits.map(&:id) - push_commit_ids = @commits.map(&:id) - matches = mr_commit_ids & push_commit_ids - merge_request.reload_diff if matches.any? - end - + reload_diff(merge_request) unless branch_removed? merge_request.mark_as_unchecked end end @@ -173,5 +165,16 @@ module MergeRequests def branch_removed? Gitlab::Git.blank_ref?(@newrev) end + + def reload_diff(merge_request) + if merge_request.source_branch == @branch_name || force_push? + merge_request.reload_diff + else + mr_commit_ids = merge_request.commits.map(&:id) + push_commit_ids = @commits.map(&:id) + matches = mr_commit_ids & push_commit_ids + merge_request.reload_diff if matches.any? + end + end end end |