diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index 12a6dd2d..c26d40c5 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -177,15 +177,8 @@ class MergeRequest < ActiveRecord::Base end def merge!(user_id) + self.author_id_of_changes = user_id self.merge - - Event.create( - project: self.project, - action: Event::MERGED, - target_id: self.id, - target_type: "MergeRequest", - author_id: user_id - ) end def automerge!(current_user) diff --git a/app/observers/activity_observer.rb b/app/observers/activity_observer.rb index 919a50f0..152e4977 100644 --- a/app/observers/activity_observer.rb +++ b/app/observers/activity_observer.rb @@ -39,4 +39,18 @@ class ActivityObserver < ActiveRecord::Observer author_id: record.author_id_of_changes ) end + + def after_merge(record, transition) + # Since MR can be merged via sidekiq + # to prevent event duplication do this check + return true if record.merge_event + + Event.create( + project: record.project, + target_id: record.id, + target_type: record.class.name, + action: Event::MERGED, + author_id: record.author_id_of_changes + ) + end end