Commit d7accda1 authored by Stan Hu's avatar Stan Hu

Show incompatible projects in Bitbucket import status

See #1871
parent a1e6fc15
Please view this file on the master branch, on stable branches it's out of date. Please view this file on the master branch, on stable branches it's out of date.
v 7.14.0 (unreleased) v 7.14.0 (unreleased)
- Show incompatible projects in Bitbucket import status (Stan Hu)
- Fix coloring of diffs on MR Discussion-tab (Gert Goet) - Fix coloring of diffs on MR Discussion-tab (Gert Goet)
- Fix "Network" and "Graphs" pages for branches with encoded slashes (Stan Hu) - Fix "Network" and "Graphs" pages for branches with encoded slashes (Stan Hu)
- Fix errors deleting and creating branches with encoded slashes (Stan Hu) - Fix errors deleting and creating branches with encoded slashes (Stan Hu)
......
...@@ -22,6 +22,7 @@ class Import::BitbucketController < Import::BaseController ...@@ -22,6 +22,7 @@ class Import::BitbucketController < Import::BaseController
def status def status
@repos = client.projects @repos = client.projects
@incompatible_repos = client.incompatible_projects
@already_added_projects = current_user.created_projects.where(import_type: "bitbucket") @already_added_projects = current_user.created_projects.where(import_type: "bitbucket")
already_added_projects_names = @already_added_projects.pluck(:import_source) already_added_projects_names = @already_added_projects.pluck(:import_source)
......
...@@ -3,11 +3,16 @@ ...@@ -3,11 +3,16 @@
%i.fa.fa-bitbucket %i.fa.fa-bitbucket
Import projects from Bitbucket Import projects from Bitbucket
%p.light - if @repos.any?
Select projects you want to import. %p.light
%hr Select projects you want to import.
%p %hr
= button_tag 'Import all projects', class: "btn btn-success js-import-all" %p
- if @incompatible_repos.any?
= button_tag 'Import all compatible projects', class: "btn btn-success js-import-all"
- else
= button_tag 'Import all projects', class: "btn btn-success js-import-all"
%table.table.import-jobs %table.table.import-jobs
%thead %thead
...@@ -41,6 +46,24 @@ ...@@ -41,6 +46,24 @@
= "#{repo["owner"]}/#{repo["slug"]}" = "#{repo["owner"]}/#{repo["slug"]}"
%td.import-actions.job-status %td.import-actions.job-status
= button_tag "Import", class: "btn js-add-to-import" = button_tag "Import", class: "btn js-add-to-import"
- @incompatible_repos.each do |repo|
%tr{id: "repo_#{repo["owner"]}___#{repo["slug"]}"}
%td
= link_to "#{repo["owner"]}/#{repo["slug"]}", "https://bitbucket.org/#{repo["owner"]}/#{repo["slug"]}", target: "_blank"
%td.import-target
%td.import-actions-job-status
= label_tag "Incompatible Project", nil, class: "label label-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. Please convert
= link_to "them to Git,", "https://www.atlassian.com/git/tutorials/migrating-overview"
and go through the
= link_to "import flow", status_import_bitbucket_path
again.
:coffeescript :coffeescript
new ImporterStatus("#{jobs_import_bitbucket_path}", "#{import_bitbucket_path}") new ImporterStatus("#{jobs_import_bitbucket_path}", "#{import_bitbucket_path}")
...@@ -87,6 +87,10 @@ module Gitlab ...@@ -87,6 +87,10 @@ module Gitlab
JSON.parse(get("/api/1.0/user/repositories").body).select { |repo| repo["scm"] == "git" } JSON.parse(get("/api/1.0/user/repositories").body).select { |repo| repo["scm"] == "git" }
end end
def incompatible_projects
JSON.parse(get("/api/1.0/user/repositories").body).reject { |repo| repo["scm"] == "git" }
end
private private
def get(url) def get(url)
......
...@@ -39,12 +39,14 @@ describe Import::BitbucketController do ...@@ -39,12 +39,14 @@ describe Import::BitbucketController do
it "assigns variables" do it "assigns variables" do
@project = create(:project, import_type: 'bitbucket', creator_id: user.id) @project = create(:project, import_type: 'bitbucket', creator_id: user.id)
stub_client(projects: [@repo]) client = stub_client(projects: [@repo])
allow(client).to receive(:incompatible_projects).and_return([])
get :status get :status
expect(assigns(:already_added_projects)).to eq([@project]) expect(assigns(:already_added_projects)).to eq([@project])
expect(assigns(:repos)).to eq([@repo]) expect(assigns(:repos)).to eq([@repo])
expect(assigns(:incompatible_repos)).to eq([])
end end
it "does not show already added project" do it "does not show already added project" do
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment