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
path: root/app
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2014-09-05 17:56:36 +0400
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2014-09-05 17:56:36 +0400
commitb0b05aa28d127452600c800dabb554735a9d7e04 (patch)
tree0711c6a7560f35736321da4e0382ac58a503eb48 /app
parente088777e1ba1c8fa809f2a6894aea640373c56c1 (diff)
Add comment to merge request when new push happens
It allows track when user added new commits to existing merge request Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Diffstat (limited to 'app')
-rw-r--r--app/models/note.rb18
-rw-r--r--app/models/project.rb23
2 files changed, 38 insertions, 3 deletions
diff --git a/app/models/note.rb b/app/models/note.rb
index 0fa1a7ab615..deda494f475 100644
--- a/app/models/note.rb
+++ b/app/models/note.rb
@@ -117,6 +117,24 @@ class Note < ActiveRecord::Base
})
end
+ def create_new_commits_note(noteable, project, author, commits)
+ body = "Pushed new commits:\n\n"
+
+ commits.each do |commit|
+ message = "* #{commit.short_id} - #{commit.title}"
+ body << message
+ body << "\n"
+ end
+
+ create(
+ noteable: noteable,
+ project: project,
+ author: author,
+ note: body,
+ system: true
+ )
+ end
+
def discussions_from_notes(notes)
discussion_ids = []
discussions = []
diff --git a/app/models/project.rb b/app/models/project.rb
index 2bd6a57ee28..114e40983f8 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -400,18 +400,35 @@ class Project < ActiveRecord::Base
def update_merge_requests(oldrev, newrev, ref, user)
return true unless ref =~ /heads/
branch_name = ref.gsub("refs/heads/", "")
- c_ids = self.repository.commits_between(oldrev, newrev).map(&:id)
+ commits = self.repository.commits_between(oldrev, newrev)
+ c_ids = commits.map(&:id)
# Close merge requests
mrs = self.merge_requests.opened.where(target_branch: branch_name).to_a
mrs = mrs.select(&:last_commit).select { |mr| c_ids.include?(mr.last_commit.id) }
- mrs.each { |merge_request| MergeRequests::MergeService.new.execute(merge_request, user, nil) }
+
+ mrs.uniq.each do |merge_request|
+ MergeRequests::MergeService.new.execute(merge_request, user, nil)
+ end
# Update code for merge requests into project between project branches
mrs = self.merge_requests.opened.by_branch(branch_name).to_a
# Update code for merge requests between project and project fork
mrs += self.fork_merge_requests.opened.by_branch(branch_name).to_a
- mrs.each { |merge_request| merge_request.reload_code; merge_request.mark_as_unchecked }
+
+ mrs.uniq.each do |merge_request|
+ merge_request.reload_code
+ merge_request.mark_as_unchecked
+ end
+
+ # Add comment about pushing new commits to merge requests
+ mrs = self.merge_requests.opened.where(source_branch: branch_name).to_a
+ mrs += self.fork_merge_requests.opened.where(source_branch: branch_name).to_a
+
+ mrs.uniq.each do |merge_request|
+ Note.create_new_commits_note(merge_request, merge_request.project,
+ user, commits)
+ end
true
end