diff --git a/app/models/project.rb b/app/models/project.rb index e3889ff23..da58c96db 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -776,7 +776,7 @@ class Project < ActiveRecord::Base new_issue.copy_from(issue, :subtasks => false) new_issue.project = self # Reassign fixed_versions by name, since names are unique per project - if issue.fixed_version + if issue.fixed_version && issue.fixed_version.project == project new_issue.fixed_version = self.versions.detect {|v| v.name == issue.fixed_version.name} end # Reassign the category by name, since names are unique per project diff --git a/test/unit/project_test.rb b/test/unit/project_test.rb index 1171c5e93..fac2307ed 100644 --- a/test/unit/project_test.rb +++ b/test/unit/project_test.rb @@ -844,6 +844,22 @@ class ProjectTest < ActiveSupport::TestCase assert_not_equal assigned_version.id, copied_issue.fixed_version.id # Different record end + should "keep target shared versions from other project" do + assigned_version = Version.generate!(:name => "Assigned Issues", :status => 'open', :project_id => 1, :sharing => 'system') + issue = Issue.generate_for_project!(@source_project, + :fixed_version => assigned_version, + :subject => "keep target shared versions", + :tracker_id => 1, + :project_id => @source_project.id) + + assert @project.copy(@source_project) + @project.reload + copied_issue = @project.issues.first(:conditions => {:subject => "keep target shared versions"}) + + assert copied_issue + assert_equal assigned_version, copied_issue.fixed_version + end + should "copy issue relations" do Setting.cross_project_issue_relations = '1'