Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorDouwe Maan <douwe@gitlab.com>2015-04-21 16:19:23 +0300
committerDouwe Maan <douwe@gitlab.com>2015-04-24 13:30:36 +0300
commit0ff778c0f4a3b599d0f36a1deee5607d03e52b9a (patch)
treead89737763ed27faedec8e28ac338a4b1fb94b34 /app
parent27af24c1c951385bccd298c98044d57ff22ccd1c (diff)
Link cross-project cross-reference notes to correct project.
Diffstat (limited to 'app')
-rw-r--r--app/models/concerns/mentionable.rb2
-rw-r--r--app/models/note.rb46
-rw-r--r--app/services/git_push_service.rb2
-rw-r--r--app/services/notes/create_service.rb2
-rw-r--r--app/services/notes/update_service.rb3
5 files changed, 15 insertions, 40 deletions
diff --git a/app/models/concerns/mentionable.rb b/app/models/concerns/mentionable.rb
index aad5e514793..3ef3e8b67d8 100644
--- a/app/models/concerns/mentionable.rb
+++ b/app/models/concerns/mentionable.rb
@@ -64,7 +64,7 @@ module Mentionable
def create_cross_references!(p = project, a = author, without = [])
refs = references(p) - without
refs.each do |ref|
- Note.create_cross_reference_note(ref, local_reference, a, p)
+ Note.create_cross_reference_note(ref, local_reference, a)
end
end
diff --git a/app/models/note.rb b/app/models/note.rb
index 99e86ac0250..26739426a88 100644
--- a/app/models/note.rb
+++ b/app/models/note.rb
@@ -77,11 +77,11 @@ class Note < ActiveRecord::Base
# +mentioner+'s description or an associated Note.
# Create a system Note associated with +noteable+ with a GFM back-reference
# to +mentioner+.
- def create_cross_reference_note(noteable, mentioner, author, project)
- gfm_reference = mentioner_gfm_ref(noteable, mentioner, project)
+ def create_cross_reference_note(noteable, mentioner, author)
+ gfm_reference = mentioner_gfm_ref(noteable, mentioner)
note_options = {
- project: project,
+ project: noteable.project,
author: author,
note: cross_reference_note_content(gfm_reference),
system: true
@@ -236,7 +236,7 @@ class Note < ActiveRecord::Base
# Determine whether or not a cross-reference note already exists.
def cross_reference_exists?(noteable, mentioner)
- gfm_reference = mentioner_gfm_ref(noteable, mentioner)
+ gfm_reference = mentioner_gfm_ref(noteable, mentioner, nil)
notes = if noteable.is_a?(Commit)
where(commit_id: noteable.id, noteable_type: 'Commit')
else
@@ -269,43 +269,19 @@ class Note < ActiveRecord::Base
# Prepend the mentioner's namespaced project path to the GFM reference for
# cross-project references. For same-project references, return the
# unmodified GFM reference.
- def mentioner_gfm_ref(noteable, mentioner, project = nil)
- if mentioner.is_a?(Commit)
- if project.nil?
- return mentioner.gfm_reference.sub('commit ', 'commit %')
- else
- mentioning_project = project
- end
- else
- mentioning_project = mentioner.project
- end
-
- noteable_project_id = noteable_project_id(noteable, mentioning_project)
-
- full_gfm_reference(mentioning_project, noteable_project_id, mentioner)
- end
-
- # Return the ID of the project that +noteable+ belongs to, or nil if
- # +noteable+ is a commit and is not part of the project that owns
- # +mentioner+.
- def noteable_project_id(noteable, mentioning_project)
- if noteable.is_a?(Commit)
- if mentioning_project.commit(noteable.id)
- # The noteable commit belongs to the mentioner's project
- mentioning_project.id
- else
- nil
- end
- else
- noteable.project.id
+ def mentioner_gfm_ref(noteable, mentioner, mentioner_project = mentioner.project)
+ if mentioner.is_a?(Commit) && project.nil?
+ return mentioner.gfm_reference.sub('commit ', 'commit %')
end
+
+ full_gfm_reference(mentioner_project, noteable.project, mentioner)
end
# Return the +mentioner+ GFM reference. If the mentioner and noteable
# projects are not the same, add the mentioning project's path to the
# returned value.
- def full_gfm_reference(mentioning_project, noteable_project_id, mentioner)
- if mentioning_project.id == noteable_project_id
+ def full_gfm_reference(mentioning_project, noteable_project, mentioner)
+ if mentioning_project.id == noteable_project
mentioner.gfm_reference
else
if mentioner.is_a?(Commit)
diff --git a/app/services/git_push_service.rb b/app/services/git_push_service.rb
index 3affd6d6463..1b889e0da8b 100644
--- a/app/services/git_push_service.rb
+++ b/app/services/git_push_service.rb
@@ -94,7 +94,7 @@ class GitPushService
author ||= commit_user(commit)
refs.each do |r|
- Note.create_cross_reference_note(r, commit, author, project)
+ Note.create_cross_reference_note(r, commit, author)
end
end
end
diff --git a/app/services/notes/create_service.rb b/app/services/notes/create_service.rb
index e969061f229..d19a6c2eca3 100644
--- a/app/services/notes/create_service.rb
+++ b/app/services/notes/create_service.rb
@@ -15,7 +15,7 @@ module Notes
# Create a cross-reference note if this Note contains GFM that names an
# issue, merge request, or commit.
note.references.each do |mentioned|
- Note.create_cross_reference_note(mentioned, note.noteable, note.author, note.project)
+ Note.create_cross_reference_note(mentioned, note.noteable, note.author)
end
execute_hooks(note)
diff --git a/app/services/notes/update_service.rb b/app/services/notes/update_service.rb
index 63431b82471..45a0db761ec 100644
--- a/app/services/notes/update_service.rb
+++ b/app/services/notes/update_service.rb
@@ -13,8 +13,7 @@ module Notes
# Create a cross-reference note if this Note contains GFM that
# names an issue, merge request, or commit.
note.references.each do |mentioned|
- Note.create_cross_reference_note(mentioned, note.noteable,
- note.author, note.project)
+ Note.create_cross_reference_note(mentioned, note.noteable, note.author)
end
end
end