From 9feea028e0d79c9a738331d15837086d60782231 Mon Sep 17 00:00:00 2001
From: Go MAEDA <maeda@farend.jp>
Date: Mon, 29 Mar 2021 05:52:37 +0000
Subject: Merged r20872 from trunk to 4.1-stable (#34921).

git-svn-id: http://svn.redmine.org/redmine/branches/4.1-stable@20874 e93f8b46-1217-0410-a6f0-8f06a7374b81
---
 app/models/issue.rb     |  2 +-
 test/unit/issue_test.rb | 17 +++++++++++++++++
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/app/models/issue.rb b/app/models/issue.rb
index 6a26cf5de..12277b9ba 100644
--- a/app/models/issue.rb
+++ b/app/models/issue.rb
@@ -1758,7 +1758,7 @@ class Issue < ActiveRecord::Base
 
   # Callback on file attachment
   def attachment_added(attachment)
-    if current_journal && !attachment.new_record?
+    if current_journal && !attachment.new_record? && !copy?
       current_journal.journalize_attachment(attachment, :added)
     end
   end
diff --git a/test/unit/issue_test.rb b/test/unit/issue_test.rb
index 1c49d0462..9a7124377 100644
--- a/test/unit/issue_test.rb
+++ b/test/unit/issue_test.rb
@@ -1476,6 +1476,23 @@ class IssueTest < ActiveSupport::TestCase
     assert_equal [3, nil], copy.children.map(&:assigned_to_id)
   end
 
+  def test_copy_should_not_add_attachments_to_journal
+    set_tmp_attachments_directory
+    issue = Issue.generate!
+    copy = Issue.new
+    copy.init_journal User.find(1)
+    copy.copy_from issue
+
+    copy.project = issue.project
+    copy.save_attachments(
+      { 'p0' => {'file' => mock_file_with_options(:original_filename => 'upload')} }
+    )
+    assert copy.save
+    assert j = copy.journals.last
+    assert_equal 1, j.details.size
+    assert_equal 'relation', j.details[0].property
+  end
+
   def test_should_not_call_after_project_change_on_creation
     issue = Issue.new(:project_id => 1, :tracker_id => 1, :status_id => 1,
                       :subject => 'Test', :author_id => 1)
-- 
cgit v1.2.3