diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index 12a6dd2d7b239e153f35bdcc43c93f1bff431c85..c26d40c57037dd67fd29816e24e5153a5d758910 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -177,15 +177,8 @@ def unmerged_commits 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 919a50f00c84b1c9048a9b414bd74f94fa76fd6f..152e497794b329d8a2133c4233e006f2dbc7b160 100644 --- a/app/observers/activity_observer.rb +++ b/app/observers/activity_observer.rb @@ -39,4 +39,18 @@ def after_reopen(record, transition) 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