- page_title _('Bitbucket import') - header_title _('Projects'), root_path %h3.page-title %i.fa.fa-bitbucket = _('Import projects from Bitbucket') - if @repos.any? %p.light = _('Select projects you want to import.') %p - if @incompatible_repos.any? = button_tag class: 'btn btn-import btn-success js-import-all' do = _('Import all compatible projects') = icon('spinner spin', class: 'loading-icon') - else = button_tag class: 'btn btn-import btn-success js-import-all' do = _('Import all projects') = icon('spinner spin', class: 'loading-icon') .position-relative.ms-no-clear.d-flex.flex-fill.float-right = form_tag status_import_bitbucket_path, method: 'get' do = text_field_tag :filter, @filter, class: 'form-control append-bottom-10 pr-5', placeholder: _('Filter projects'), size: 40, autofocus: true .position-absolute.position-top-0.d-flex.align-items-center.text-muted.position-right-0{ style: 'margin-top: 1px' } %i{ class: 'fa fa-times fa-lg pl-2 pr-2 cursor-pointer d-none', 'aria-hidden': true } .border-left %button{ class: 'btn btn-transparent btn-secondary', type: 'submit' } %i{ class: 'fa fa-search', 'aria-hidden': true } .table-responsive %table.table.import-jobs %colgroup.import-jobs-from-col %colgroup.import-jobs-to-col %colgroup.import-jobs-status-col %thead %tr %th= _('From Bitbucket') %th= _('To GitLab') %th= _('Status') %tbody - @already_added_projects.each do |project| %tr{ id: "project_#{project.id}", class: "#{project_status_css_class(project.import_status)}" } %td = link_to project.import_source, "https://bitbucket.org/#{project.import_source}", target: '_blank', rel: 'noopener noreferrer' %td = link_to project.full_path, [project.namespace.becomes(Namespace), project] %td.job-status - case project.import_status - when 'finished' %span %i.fa.fa-check = _('done') - when 'started' %i.fa.fa-spinner.fa-spin = _('started') - else = project.human_import_status_name - @repos.each do |repo| %tr{ id: "repo_#{repo.owner}___#{repo.slug}" } %td = link_to repo.full_name, "https://bitbucket.org/#{repo.full_name}", target: '_blank', rel: 'noopener noreferrer' %td.import-target %fieldset.row .input-group .project-path.input-group-prepend - if current_user.can_select_namespace? - selected = params[:namespace_id] || :current_user - opts = current_user.can_create_group? ? { extra_group: Group.new(name: repo.owner, path: repo.owner) } : {} = select_tag :namespace_id, namespaces_options(selected, opts.merge({ display_path: true })), { class: 'select2 js-select-namespace', tabindex: 1 } - else = text_field_tag :path, current_user.namespace_path, class: "input-group-text input-large form-control", tabindex: 1, disabled: true %span.input-group-prepend .input-group-text / = text_field_tag :path, sanitize_project_name(repo.slug), class: "input-mini form-control", tabindex: 2, autofocus: true, required: true %td.import-actions.job-status = button_tag class: 'btn btn-import js-add-to-import' do = _('Import') = icon('spinner spin', class: 'loading-icon') - @incompatible_repos.each do |repo| %tr{ id: "repo_#{repo.owner}___#{repo.slug}" } %td = link_to repo.full_name, "https://bitbucket.org/#{repo.full_name}", target: '_blank', rel: 'noopener noreferrer' %td.import-target %td.import-actions-job-status = label_tag _('Incompatible Project'), nil, class: 'label badge-danger' - if @incompatible_repos.any? %p = _("One or more of your Bitbucket projects cannot be imported into GitLab directly because they use Subversion or Mercurial for version control, rather than Git.") - link_to_git = link_to(_('Git'), 'https://www.atlassian.com/git/tutorials/migrating-overview') - link_to_import_flow = link_to(_('import flow'), status_import_bitbucket_path) = _("Please convert them to %{link_to_git}, and go through the %{link_to_import_flow} again.").html_safe % { link_to_git: link_to_git, link_to_import_flow: link_to_import_flow } .js-importer-status{ data: { jobs_import_path: "#{jobs_import_bitbucket_path}", import_path: "#{import_bitbucket_path}" } }