diff options
author | Sean McGivern <sean@gitlab.com> | 2017-06-16 15:00:58 +0100 |
---|---|---|
committer | Sean McGivern <sean@gitlab.com> | 2017-07-06 17:36:10 +0100 |
commit | aff5c9f3e5ecdd9eee2b2b60ab6367da878582fc (patch) | |
tree | e0ab89e6e733031b8296024d5e5d496e5b767516 /app/models/merge_request.rb | |
parent | 9274c3c1598f3ff32339e681d5812feeb0f62605 (diff) | |
download | gitlab-ce-aff5c9f3e5ecdd9eee2b2b60ab6367da878582fc.tar.gz |
Add table for merge request commits
This is an ID-less table with just three columns: an association to the merge
request diff the commit belongs to, the relative order of the commit within the
merge request diff, and the commit SHA itself.
Previously we stored much more information about the commits, so that we could
display them even when they were deleted from the repo. Since 8.0, we ensure
that those commits are kept around for as long as the target repo itself is, so
we don't need to duplicate that data in the database.
Diffstat (limited to 'app/models/merge_request.rb')
-rw-r--r-- | app/models/merge_request.rb | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index 2752181ed79..2fc6191e785 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -31,7 +31,7 @@ class MergeRequest < ActiveRecord::Base after_create :ensure_merge_request_diff, unless: :importing? after_update :reload_diff_if_branch_changed - delegate :commits, :real_size, :commits_sha, :commits_count, + delegate :commits, :real_size, :commit_shas, :commits_count, to: :merge_request_diff, prefix: nil # When this attribute is true some MR validation is ignored @@ -518,7 +518,7 @@ class MergeRequest < ActiveRecord::Base def related_notes # Fetch comments only from last 100 commits commits_for_notes_limit = 100 - commit_ids = commits.last(commits_for_notes_limit).map(&:id) + commit_ids = commit_shas.take(commits_for_notes_limit) Note.where( "(project_id = :target_project_id AND noteable_type = 'MergeRequest' AND noteable_id = :mr_id) OR" + @@ -841,15 +841,15 @@ class MergeRequest < ActiveRecord::Base return Ci::Pipeline.none unless source_project @all_pipelines ||= source_project.pipelines - .where(sha: all_commits_sha, ref: source_branch) + .where(sha: all_commit_shas, ref: source_branch) .order(id: :desc) end # Note that this could also return SHA from now dangling commits # - def all_commits_sha + def all_commit_shas if persisted? - merge_request_diffs.flat_map(&:commits_sha).uniq + merge_request_diffs.preload(:merge_request_diff_commits).flat_map(&:commit_shas).uniq elsif compare_commits compare_commits.to_a.reverse.map(&:id) else |