diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-01-29 15:09:08 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-01-29 15:09:08 +0300 |
commit | 7cc6872401eb487ed20dbb9d455f8bb9c97d9e39 (patch) | |
tree | 63f6ed5d4e6c5cec31c43363626d9f5b178eddf8 /app/models | |
parent | 46b10c0fc884400941c17e2777b242ac54d111e5 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/commit.rb | 6 | ||||
-rw-r--r-- | app/models/commit_range.rb | 4 | ||||
-rw-r--r-- | app/models/concerns/referable.rb | 8 | ||||
-rw-r--r-- | app/models/issue.rb | 2 | ||||
-rw-r--r-- | app/models/label.rb | 2 | ||||
-rw-r--r-- | app/models/merge_request.rb | 2 | ||||
-rw-r--r-- | app/models/milestone.rb | 2 | ||||
-rw-r--r-- | app/models/project.rb | 13 | ||||
-rw-r--r-- | app/models/snippet.rb | 2 |
9 files changed, 28 insertions, 13 deletions
diff --git a/app/models/commit.rb b/app/models/commit.rb index 460725b2016..31a890096e9 100644 --- a/app/models/commit.rb +++ b/app/models/commit.rb @@ -484,10 +484,10 @@ class Commit end def commit_reference(from, referable_commit_id, full: false) - reference = project.to_reference(from, full: full) + base = project.to_reference_base(from, full: full) - if reference.present? - "#{reference}#{self.class.reference_prefix}#{referable_commit_id}" + if base.present? + "#{base}#{self.class.reference_prefix}#{referable_commit_id}" else referable_commit_id end diff --git a/app/models/commit_range.rb b/app/models/commit_range.rb index 08ca86bc902..08f1eb3731e 100644 --- a/app/models/commit_range.rb +++ b/app/models/commit_range.rb @@ -92,7 +92,7 @@ class CommitRange alias_method :id, :to_s def to_reference(from = nil, full: false) - project_reference = project.to_reference(from, full: full) + project_reference = project.to_reference_base(from, full: full) if project_reference.present? project_reference + self.class.reference_prefix + self.id @@ -102,7 +102,7 @@ class CommitRange end def reference_link_text(from = nil) - project_reference = project.to_reference(from) + project_reference = project.to_reference_base(from) reference = ref_from + notation + ref_to if project_reference.present? diff --git a/app/models/concerns/referable.rb b/app/models/concerns/referable.rb index 3b0606aa425..40edd3b3ead 100644 --- a/app/models/concerns/referable.rb +++ b/app/models/concerns/referable.rb @@ -23,6 +23,14 @@ module Referable '' end + # If this referable object can serve as the base for the + # reference of child objects (e.g. projects are the base of + # issues), but it is formatted differently, then you may wish + # to override this method. + def to_reference_base(from = nil, full:) + to_reference(from, full: full) + end + def reference_link_text(from = nil) to_reference(from) end diff --git a/app/models/issue.rb b/app/models/issue.rb index bf600278162..3823b5e0fba 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -173,7 +173,7 @@ class Issue < ApplicationRecord def to_reference(from = nil, full: false) reference = "#{self.class.reference_prefix}#{iid}" - "#{project.to_reference(from, full: full)}#{reference}" + "#{project.to_reference_base(from, full: full)}#{reference}" end def suggested_branch_name diff --git a/app/models/label.rb b/app/models/label.rb index dbb96a2b9da..938ecb323e2 100644 --- a/app/models/label.rb +++ b/app/models/label.rb @@ -225,7 +225,7 @@ class Label < ApplicationRecord reference = "#{self.class.reference_prefix}#{format_reference}" if from - "#{from.to_reference(target_project, full: full)}#{reference}" + "#{from.to_reference_base(target_project, full: full)}#{reference}" else reference end diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index 50346d97d8b..48c5c0152b5 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -396,7 +396,7 @@ class MergeRequest < ApplicationRecord def to_reference(from = nil, full: false) reference = "#{self.class.reference_prefix}#{iid}" - "#{project.to_reference(from, full: full)}#{reference}" + "#{project.to_reference_base(from, full: full)}#{reference}" end def commits(limit: nil) diff --git a/app/models/milestone.rb b/app/models/milestone.rb index 5da92fc4bc5..f709e518047 100644 --- a/app/models/milestone.rb +++ b/app/models/milestone.rb @@ -228,7 +228,7 @@ class Milestone < ApplicationRecord reference = "#{self.class.reference_prefix}#{format_reference}" if project - "#{project.to_reference(from, full: full)}#{reference}" + "#{project.to_reference_base(from, full: full)}#{reference}" else reference end diff --git a/app/models/project.rb b/app/models/project.rb index f8c201d73e5..3aa8430f3a2 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -1068,12 +1068,19 @@ class Project < ApplicationRecord end end - def to_reference_with_postfix - "#{to_reference(full: true)}#{self.class.reference_postfix}" + # Produce a valid reference (see Referable#to_reference) + # + # NB: For projects, all references are 'full' - i.e. they all include the + # full_path, rather than just the project name. For this reason, we ignore + # the value of `full:` passed to this method, which is part of the Referable + # interface. + def to_reference(from = nil, full: false) + base = to_reference_base(from, full: true) + "#{base}#{self.class.reference_postfix}" end # `from` argument can be a Namespace or Project. - def to_reference(from = nil, full: false) + def to_reference_base(from = nil, full: false) if full || cross_namespace_reference?(from) full_path elsif cross_project_reference?(from) diff --git a/app/models/snippet.rb b/app/models/snippet.rb index 19685cdb78e..77ec683f584 100644 --- a/app/models/snippet.rb +++ b/app/models/snippet.rb @@ -180,7 +180,7 @@ class Snippet < ApplicationRecord reference = "#{self.class.reference_prefix}#{id}" if project.present? - "#{project.to_reference(from, full: full)}#{reference}" + "#{project.to_reference_base(from, full: full)}#{reference}" else reference end |