summaryrefslogtreecommitdiffstats
path: root/app/models/issue_relation.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/issue_relation.rb')
-rw-r--r--app/models/issue_relation.rb7
1 files changed, 6 insertions, 1 deletions
diff --git a/app/models/issue_relation.rb b/app/models/issue_relation.rb
index 8f2db40f3..751ac3579 100644
--- a/app/models/issue_relation.rb
+++ b/app/models/issue_relation.rb
@@ -47,7 +47,12 @@ class IssueRelation < ActiveRecord::Base
if issue_from && issue_to
errors.add :issue_to_id, :invalid if issue_from_id == issue_to_id
errors.add :issue_to_id, :not_same_project unless issue_from.project_id == issue_to.project_id || Setting.cross_project_issue_relations?
- errors.add_to_base :circular_dependency if issue_to.all_dependent_issues.include? issue_from
+ #detect circular dependencies depending wether the relation should be reversed
+ if TYPES.has_key?(relation_type) && TYPES[relation_type][:reverse]
+ errors.add_to_base :circular_dependency if issue_from.all_dependent_issues.include? issue_to
+ else
+ errors.add_to_base :circular_dependency if issue_to.all_dependent_issues.include? issue_from
+ end
errors.add_to_base :cant_link_an_issue_with_a_descendant if issue_from.is_descendant_of?(issue_to) || issue_from.is_ancestor_of?(issue_to)
end
end