summaryrefslogtreecommitdiff
path: root/lib/gitlab
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-03-17 12:09:52 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2020-03-17 12:09:52 +0000
commit8ae26d705abe341b03bc15d4373d6cd0c77c0baf (patch)
tree655ee03a968e340c975b8ab7d77cfd5ceaf3c969 /lib/gitlab
parentfc1df8c8307fc5022f9e8aae04164c089d8fdf2e (diff)
downloadgitlab-ce-8ae26d705abe341b03bc15d4373d6cd0c77c0baf.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'lib/gitlab')
-rw-r--r--lib/gitlab/checks/post_push_message.rb15
-rw-r--r--lib/gitlab/checks/project_moved.rb4
-rw-r--r--lib/gitlab/git_access.rb4
-rw-r--r--lib/gitlab/git_access_snippet.rb10
-rw-r--r--lib/gitlab/repo_path.rb22
5 files changed, 31 insertions, 24 deletions
diff --git a/lib/gitlab/checks/post_push_message.rb b/lib/gitlab/checks/post_push_message.rb
index 492dbb5a596..b3c981d252b 100644
--- a/lib/gitlab/checks/post_push_message.rb
+++ b/lib/gitlab/checks/post_push_message.rb
@@ -3,8 +3,8 @@
module Gitlab
module Checks
class PostPushMessage
- def initialize(project, user, protocol)
- @project = project
+ def initialize(repository, user, protocol)
+ @repository = repository
@user = user
@protocol = protocol
end
@@ -34,14 +34,21 @@ module Gitlab
protected
- attr_reader :project, :user, :protocol
+ attr_reader :repository, :user, :protocol
+
+ delegate :project, to: :repository, allow_nil: true
+ delegate :container, to: :repository, allow_nil: false
def self.message_key(user_id, project_id)
raise NotImplementedError
end
def url_to_repo
- protocol == 'ssh' ? project.ssh_url_to_repo : project.http_url_to_repo
+ protocol == 'ssh' ? message_subject.ssh_url_to_repo : message_subject.http_url_to_repo
+ end
+
+ def message_subject
+ repository.repo_type.wiki? ? project.wiki : container
end
end
end
diff --git a/lib/gitlab/checks/project_moved.rb b/lib/gitlab/checks/project_moved.rb
index 6f04fddc6c4..4cc35de9c2d 100644
--- a/lib/gitlab/checks/project_moved.rb
+++ b/lib/gitlab/checks/project_moved.rb
@@ -5,10 +5,10 @@ module Gitlab
class ProjectMoved < PostPushMessage
REDIRECT_NAMESPACE = "redirect_namespace"
- def initialize(project, user, protocol, redirected_path)
+ def initialize(repository, user, protocol, redirected_path)
@redirected_path = redirected_path
- super(project, user, protocol)
+ super(repository, user, protocol)
end
def message
diff --git a/lib/gitlab/git_access.rb b/lib/gitlab/git_access.rb
index 7361ccf4aa2..c400e1cd4fd 100644
--- a/lib/gitlab/git_access.rb
+++ b/lib/gitlab/git_access.rb
@@ -188,7 +188,7 @@ module Gitlab
def add_project_moved_message!
return if redirected_path.nil?
- project_moved = Checks::ProjectMoved.new(project, user, protocol, redirected_path)
+ project_moved = Checks::ProjectMoved.new(repository, user, protocol, redirected_path)
project_moved.add_message
end
@@ -250,7 +250,7 @@ module Gitlab
@project = project
user_access.project = @project
- Checks::ProjectCreated.new(project, user, protocol).add_message
+ Checks::ProjectCreated.new(repository, user, protocol).add_message
end
def check_repository_existence!
diff --git a/lib/gitlab/git_access_snippet.rb b/lib/gitlab/git_access_snippet.rb
index 87399f8d07f..e11c1ea527c 100644
--- a/lib/gitlab/git_access_snippet.rb
+++ b/lib/gitlab/git_access_snippet.rb
@@ -39,11 +39,11 @@ module Gitlab
override :check_project!
def check_project!(cmd, changes)
- if snippet.is_a?(ProjectSnippet)
- check_namespace!
- check_project_accessibility!
- # TODO add add_project_moved_message! to handle non-project repo https://gitlab.com/gitlab-org/gitlab/issues/205646
- end
+ return unless snippet.is_a?(ProjectSnippet)
+
+ check_namespace!
+ check_project_accessibility!
+ add_project_moved_message!
end
override :check_push_access!
diff --git a/lib/gitlab/repo_path.rb b/lib/gitlab/repo_path.rb
index da74c38d0ec..67e23624045 100644
--- a/lib/gitlab/repo_path.rb
+++ b/lib/gitlab/repo_path.rb
@@ -19,8 +19,7 @@ module Gitlab
# Removing the suffix (.wiki, .design, ...) from the project path
full_path = repo_path.chomp(type.path_suffix)
- container, project, was_redirected = find_container(type, full_path)
- redirected_path = repo_path if was_redirected
+ container, project, redirected_path = find_container(type, full_path)
return [container, project, type, redirected_path] if container
end
@@ -33,22 +32,23 @@ module Gitlab
def self.find_container(type, full_path)
if type.snippet?
- snippet, was_redirected = find_snippet(full_path)
+ snippet, redirected_path = find_snippet(full_path)
- [snippet, snippet&.project, was_redirected]
+ [snippet, snippet&.project, redirected_path]
else
- project, was_redirected = find_project(full_path)
+ project, redirected_path = find_project(full_path)
- [project, project, was_redirected]
+ [project, project, redirected_path]
end
end
def self.find_project(project_path)
- return [nil, false] if project_path.blank?
+ return [nil, nil] if project_path.blank?
project = Project.find_by_full_path(project_path, follow_redirects: true)
+ redirected_path = redirected?(project, project_path) ? project_path : nil
- [project, redirected?(project, project_path)]
+ [project, redirected_path]
end
def self.redirected?(project, project_path)
@@ -59,12 +59,12 @@ module Gitlab
# - snippets/1
# - h5bp/html5-boilerplate/snippets/53
def self.find_snippet(snippet_path)
- return [nil, false] if snippet_path.blank?
+ return [nil, nil] if snippet_path.blank?
snippet_id, project_path = extract_snippet_info(snippet_path)
- project, was_redirected = find_project(project_path)
+ project, redirected_path = find_project(project_path)
- [Snippet.find_by_id_and_project(id: snippet_id, project: project), was_redirected]
+ [Snippet.find_by_id_and_project(id: snippet_id, project: project), redirected_path]
end
def self.extract_snippet_info(snippet_path)