summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean McGivern <sean@gitlab.com>2017-10-26 11:33:54 +0100
committerSean McGivern <sean@gitlab.com>2017-11-02 14:03:25 +0000
commit60536ef670a40e26a1250ab55c105e1b67c8d7cc (patch)
tree0b1edfc345e2a01bb3b0a893553cfde7708842c2
parent8fdb8c6eecb2ef58484c541a08c1ce8524a47a65 (diff)
downloadgitlab-ce-37631-add-a-merge_request_diff_id-column-to-merge_requests.tar.gz
Set merge_request_diff_id on MR when creating37631-add-a-merge_request_diff_id-column-to-merge_requests
Once we migrate existing MRs to have this column, we will be able to get the latest diff for a single merge request more efficiently, and (more importantly) get all latest diffs for a collection of MRs efficiently.
-rw-r--r--app/models/merge_request_diff.rb4
-rw-r--r--changelogs/unreleased/37631-add-a-merge_request_diff_id-column-to-merge_requests.yml2
-rw-r--r--lib/gitlab/import_export/import_export.yml2
3 files changed, 6 insertions, 2 deletions
diff --git a/app/models/merge_request_diff.rb b/app/models/merge_request_diff.rb
index faf0b95f842..1eda0f9cbbd 100644
--- a/app/models/merge_request_diff.rb
+++ b/app/models/merge_request_diff.rb
@@ -48,6 +48,10 @@ class MergeRequestDiff < ActiveRecord::Base
# Collect information about commits and diff from repository
# and save it to the database as serialized data
def save_git_content
+ MergeRequest
+ .where('id = ? AND COALESCE(latest_merge_request_diff_id, 0) < ?', self.merge_request_id, self.id)
+ .update_all(latest_merge_request_diff_id: self.id)
+
ensure_commit_shas
save_commits
save_diffs
diff --git a/changelogs/unreleased/37631-add-a-merge_request_diff_id-column-to-merge_requests.yml b/changelogs/unreleased/37631-add-a-merge_request_diff_id-column-to-merge_requests.yml
index 1a8632f7450..a7127f49c16 100644
--- a/changelogs/unreleased/37631-add-a-merge_request_diff_id-column-to-merge_requests.yml
+++ b/changelogs/unreleased/37631-add-a-merge_request_diff_id-column-to-merge_requests.yml
@@ -1,5 +1,5 @@
---
-title: Make finding most recent merge request diffs more efficient
+title: Add a latest_merge_request_diff_id column to merge_requests
merge_request: 15035
author:
type: performance
diff --git a/lib/gitlab/import_export/import_export.yml b/lib/gitlab/import_export/import_export.yml
index 57678ffdd2a..26665d7d926 100644
--- a/lib/gitlab/import_export/import_export.yml
+++ b/lib/gitlab/import_export/import_export.yml
@@ -113,7 +113,7 @@ excluded_attributes:
- :milestone_id
- :ref_fetched
- :merge_jid
- - :merge_request_diff_id
+ - :latest_merge_request_diff_id
award_emoji:
- :awardable_id
statuses: