diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-03-17 12:09:52 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-03-17 12:09:52 +0000 |
commit | 8ae26d705abe341b03bc15d4373d6cd0c77c0baf (patch) | |
tree | 655ee03a968e340c975b8ab7d77cfd5ceaf3c969 /lib/gitlab | |
parent | fc1df8c8307fc5022f9e8aae04164c089d8fdf2e (diff) | |
download | gitlab-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.rb | 15 | ||||
-rw-r--r-- | lib/gitlab/checks/project_moved.rb | 4 | ||||
-rw-r--r-- | lib/gitlab/git_access.rb | 4 | ||||
-rw-r--r-- | lib/gitlab/git_access_snippet.rb | 10 | ||||
-rw-r--r-- | lib/gitlab/repo_path.rb | 22 |
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) |