summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2016-08-15 16:25:29 +0300
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2016-08-15 16:25:29 +0300
commit94a7198ade54595d72797cab09db2c2a89172535 (patch)
treec641d8cde086b83ca71fb995700e8524cd47dcb0
parent29ac60d7fbb8208880408dbf98a94acd0ae73730 (diff)
downloadgitlab-ce-94a7198ade54595d72797cab09db2c2a89172535.tar.gz
Fix merge request diff create and head_commit_sha compatibility
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
-rw-r--r--app/models/merge_request_diff.rb17
1 files changed, 14 insertions, 3 deletions
diff --git a/app/models/merge_request_diff.rb b/app/models/merge_request_diff.rb
index 4c18775c44a..950b00f1001 100644
--- a/app/models/merge_request_diff.rb
+++ b/app/models/merge_request_diff.rb
@@ -42,8 +42,19 @@ class MergeRequestDiff < ActiveRecord::Base
def ensure_commits_sha
self.start_commit_sha ||= merge_request.target_branch_sha
- self.head_commit_sha ||= last_commit.try(:sha) || merge_request.source_branch_sha
+ self.head_commit_sha ||= merge_request.source_branch_sha
self.base_commit_sha ||= find_base_sha
+ save
+ end
+
+ # Override head_commit_sha to keep compatibility with merge request diff
+ # created before version 8.4 that does not store head_commit_sha in separate db field.
+ def head_commit_sha
+ if persisted? && super.nil?
+ last_commit.try(:sha)
+ else
+ super
+ end
end
# This method will rely on repository branch sha
@@ -57,7 +68,7 @@ class MergeRequestDiff < ActiveRecord::Base
# in case head_commit_sha is nil. Its necesarry for old merge request diff
# created before version 8.4 to work
def safe_head_commit_sha
- head_commit_sha || last_commit.try(:sha) || merge_request.source_branch_sha
+ head_commit_sha || merge_request.source_branch_sha
end
def size
@@ -111,7 +122,7 @@ class MergeRequestDiff < ActiveRecord::Base
end
def head_commit
- return last_commit unless head_commit_sha
+ return unless head_commit_sha
project.commit(head_commit_sha)
end