eafccaad73
Bitbucket Server places personal projects in a namespace called `~username`. This change allows those projects and also strips them from the GitLab namespace. Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/53419
102 lines
3.9 KiB
Ruby
102 lines
3.9 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module ImportHelper
|
|
include ::Gitlab::Utils::StrongMemoize
|
|
|
|
def has_ci_cd_only_params?
|
|
false
|
|
end
|
|
|
|
def sanitize_project_name(name)
|
|
# For personal projects in Bitbucket in the form ~username, we can
|
|
# just drop that leading tilde.
|
|
name.gsub(/\A~+/, '').gsub(/[^\w\-]/, '-')
|
|
end
|
|
|
|
def import_project_target(owner, name)
|
|
namespace = current_user.can_create_group? ? owner : current_user.namespace_path
|
|
"#{namespace}/#{name}"
|
|
end
|
|
|
|
def provider_project_link(provider, full_path)
|
|
url = __send__("#{provider}_project_url", full_path) # rubocop:disable GitlabSecurity/PublicSend
|
|
|
|
link_to full_path, url, target: '_blank', rel: 'noopener noreferrer'
|
|
end
|
|
|
|
def import_will_timeout_message(_ci_cd_only)
|
|
timeout = time_interval_in_words(Gitlab.config.gitlab_shell.git_timeout)
|
|
_('The import will time out after %{timeout}. For repositories that take longer, use a clone/push combination.') % { timeout: timeout }
|
|
end
|
|
|
|
def import_svn_message(_ci_cd_only)
|
|
svn_link = link_to _('this document'), help_page_path('user/project/import/svn')
|
|
_('To import an SVN repository, check out %{svn_link}.').html_safe % { svn_link: svn_link }
|
|
end
|
|
|
|
def import_in_progress_title
|
|
if @project.forked?
|
|
_('Forking in progress')
|
|
else
|
|
_('Import in progress')
|
|
end
|
|
end
|
|
|
|
def import_wait_and_refresh_message
|
|
_('Please wait while we import the repository for you. Refresh at will.')
|
|
end
|
|
|
|
def import_github_title
|
|
_('Import repositories from GitHub')
|
|
end
|
|
|
|
def import_github_authorize_message
|
|
_('To import GitHub repositories, you first need to authorize GitLab to access the list of your GitHub repositories:')
|
|
end
|
|
|
|
def import_github_personal_access_token_message
|
|
personal_access_token_link = link_to _('Personal Access Token'), 'https://github.com/settings/tokens'
|
|
|
|
if github_import_configured?
|
|
_('Alternatively, you can use a %{personal_access_token_link}. When you create your Personal Access Token, you will need to select the <code>repo</code> scope, so we can display a list of your public and private repositories which are available to import.').html_safe % { personal_access_token_link: personal_access_token_link }
|
|
else
|
|
_('To import GitHub repositories, you can use a %{personal_access_token_link}. When you create your Personal Access Token, you will need to select the <code>repo</code> scope, so we can display a list of your public and private repositories which are available to import.').html_safe % { personal_access_token_link: personal_access_token_link }
|
|
end
|
|
end
|
|
|
|
def import_configure_github_admin_message
|
|
github_integration_link = link_to 'GitHub integration', help_page_path('integration/github')
|
|
|
|
if current_user.admin?
|
|
_('Note: As an administrator you may like to configure %{github_integration_link}, which will allow login via GitHub and allow importing repositories without generating a Personal Access Token.').html_safe % { github_integration_link: github_integration_link }
|
|
else
|
|
_('Note: Consider asking your GitLab administrator to configure %{github_integration_link}, which will allow login via GitHub and allow importing repositories without generating a Personal Access Token.').html_safe % { github_integration_link: github_integration_link }
|
|
end
|
|
end
|
|
|
|
def import_githubish_choose_repository_message
|
|
_('Choose which repositories you want to import.')
|
|
end
|
|
|
|
def import_all_githubish_repositories_button_label
|
|
_('Import all repositories')
|
|
end
|
|
|
|
private
|
|
|
|
def github_project_url(full_path)
|
|
Gitlab::Utils.append_path(github_root_url, full_path)
|
|
end
|
|
|
|
def github_root_url
|
|
strong_memoize(:github_url) do
|
|
provider = Gitlab::Auth::OAuth::Provider.config_for('github')
|
|
|
|
provider&.dig('url').presence || 'https://github.com'
|
|
end
|
|
end
|
|
|
|
def gitea_project_url(full_path)
|
|
Gitlab::Utils.append_path(@gitea_host_url, full_path)
|
|
end
|
|
end
|