diff options
Diffstat (limited to 'app/services/system_notes/issuables_service.rb')
-rw-r--r-- | app/services/system_notes/issuables_service.rb | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/app/services/system_notes/issuables_service.rb b/app/services/system_notes/issuables_service.rb index 7a73af0a81a..b344b240a07 100644 --- a/app/services/system_notes/issuables_service.rb +++ b/app/services/system_notes/issuables_service.rb @@ -242,6 +242,29 @@ module SystemNotes create_note(NoteSummary.new(noteable, project, author, body, action: 'moved')) end + # Called when noteable has been cloned + # + # noteable_ref - Referenced noteable + # direction - symbol, :to or :from + # + # Example Note text: + # + # "cloned to some_namespace/project_new#11" + # + # Returns the created Note object + def noteable_cloned(noteable_ref, direction) + unless [:to, :from].include?(direction) + raise ArgumentError, "Invalid direction `#{direction}`" + end + + cross_reference = noteable_ref.to_reference(project) + body = "cloned #{direction} #{cross_reference}" + + issue_activity_counter.track_issue_cloned_action(author: author) if noteable.is_a?(Issue) && direction == :to + + create_note(NoteSummary.new(noteable, project, author, body, action: 'cloned')) + end + # Called when the confidentiality changes # # Example Note text: |