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>2014-12-02 17:22:23 +0300
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2014-12-02 17:22:23 +0300
commit9211b541d3eaa60401f4ab6a5d264f9179ad4160 (patch)
tree5e41f1af0a7cdb82ccc8283c223379348989a816 /app/services/merge_requests
parentbf39347970865bcd97e5370c7a754406498a2d65 (diff)
Improve MR code reloading when push code
Every time you pushed to master it updates merge requests that has master as target branch. So if you have 50 open merge requests point to master it will reload all of them every time you push a single commit to master. The funny thing is that after reloading diff of most merge requests looks the same. After this patch we update diff only if we push commit to master that includes in MR commits list. For example we have next repository: feature: A - B - C master: A We create merge requests #1 with code from feature to master. MR #1: B - C If we push to master commit D - MR will not be reloaded. So picture will look next: feature: A - B - C master: A - D MR #1: B - C And if we push to master commit B - MR will be reloaded. So picture will look next: feature: A - B - C master: A - B MR #1: C Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Diffstat (limited to 'app/services/merge_requests')
-rw-r--r--app/services/merge_requests/refresh_service.rb18
1 files changed, 16 insertions, 2 deletions
diff --git a/app/services/merge_requests/refresh_service.rb b/app/services/merge_requests/refresh_service.rb
index 74448998ddd..1a1704aea77 100644
--- a/app/services/merge_requests/refresh_service.rb
+++ b/app/services/merge_requests/refresh_service.rb
@@ -43,8 +43,22 @@ module MergeRequests
merge_requests = filter_merge_requests(merge_requests)
merge_requests.each do |merge_request|
- merge_request.reload_code
- merge_request.mark_as_unchecked
+
+ if merge_request.source_branch == @branch_name
+ merge_request.reload_code
+ merge_request.mark_as_unchecked
+ else
+ mr_commit_ids = merge_request.commits.map(&:id)
+ push_commit_ids = @commits.map(&:id)
+ matches = mr_commit_ids & push_commit_ids
+
+ if matches.any?
+ merge_request.reload_code
+ merge_request.mark_as_unchecked
+ else
+ merge_request.mark_as_unchecked
+ end
+ end
end
end