Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2016-07-28 22:36:18 +0300
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2016-08-02 13:31:19 +0300
commit0e974b52d8f5806c24fdc80ef5b62b261f5be2ba (patch)
tree6307c03f82aa1f24390a1ab8c349cc093e7ef022 /app/models/merge_request_diff.rb
parentb0a023842d4e9fc29db7fa6c7168528d9e4ac09d (diff)
Refactor MergeRequestDiff initialize method
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Diffstat (limited to 'app/models/merge_request_diff.rb')
-rw-r--r--app/models/merge_request_diff.rb28
1 files changed, 12 insertions, 16 deletions
diff --git a/app/models/merge_request_diff.rb b/app/models/merge_request_diff.rb
index da0c15ddeea..940a1016302 100644
--- a/app/models/merge_request_diff.rb
+++ b/app/models/merge_request_diff.rb
@@ -25,22 +25,18 @@ class MergeRequestDiff < ActiveRecord::Base
validates :start_commit_sha, presence: true, unless: :importing?
validates :head_commit_sha, presence: true, unless: :importing?
- after_initialize :set_diff_range, unless: :importing?
- after_create :save_git_content, unless: :importing?
- after_save :keep_around_commits, unless: :importing?
-
- def set_diff_range
- if persisted?
- # Workaround for old MergeRequestDiff object
- # that does not have head_commit_sha in the database
- self.start_commit_sha ||= merge_request.target_branch_sha
- self.head_commit_sha ||= last_commit.sha
- self.base_commit_sha ||= find_base_sha
- else
- self.start_commit_sha ||= merge_request.target_branch_sha
- self.head_commit_sha ||= merge_request.source_branch_sha
- self.base_commit_sha ||= find_base_sha
- end
+ after_initialize :initialize_commits_sha, unless: :importing?
+ after_create :save_git_content, unless: :importing?
+ after_save :keep_around_commits, unless: :importing?
+
+ # Those variables are used for collecting commits and diff from git repository.
+ # After object is created those sha are stored in the database.
+ # However some old MergeRequestDiff records don't
+ # have those variables in the database so we try to initialize it
+ def initialize_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.base_commit_sha ||= find_base_sha
end
# Collect information about commits and diff from repository