mirror of
https://github.com/wahyd4/gitlabhq.git
synced 2026-08-21 18:46:10 +10:00
Show incompatible projects in Google Code import status
Importing a JSON file with only one Subversion project lead to confusion over whether the system was working. Provide status why these projects could not be imported directly. Closes #1531
This commit is contained in:
@@ -19,7 +19,7 @@ v 7.11.0 (unreleased)
|
|||||||
- Include commit comments in MR from a forked project.
|
- Include commit comments in MR from a forked project.
|
||||||
- Fix adding new group members from admin area
|
- Fix adding new group members from admin area
|
||||||
- Add default project and snippet visibility settings to the admin web UI.
|
- Add default project and snippet visibility settings to the admin web UI.
|
||||||
-
|
- Show incompatible projects in Google Code import status (Stan Hu)
|
||||||
- Fix bug where commit data would not appear in some subdirectories (Stan Hu)
|
- Fix bug where commit data would not appear in some subdirectories (Stan Hu)
|
||||||
- Fix bug where Slack service channel was not saved in admin template settings. (Stan Hu)
|
- Fix bug where Slack service channel was not saved in admin template settings. (Stan Hu)
|
||||||
- Move snippets UI to fluid layout
|
- Move snippets UI to fluid layout
|
||||||
|
|||||||
@@ -72,6 +72,7 @@ class Import::GoogleCodeController < Import::BaseController
|
|||||||
end
|
end
|
||||||
|
|
||||||
@repos = client.repos
|
@repos = client.repos
|
||||||
|
@incompatible_repos = client.incompatible_repos
|
||||||
|
|
||||||
@already_added_projects = current_user.created_projects.where(import_type: "google_code")
|
@already_added_projects = current_user.created_projects.where(import_type: "google_code")
|
||||||
already_added_projects_names = @already_added_projects.pluck(:import_source)
|
already_added_projects_names = @already_added_projects.pluck(:import_source)
|
||||||
|
|||||||
@@ -2,15 +2,19 @@
|
|||||||
%i.fa.fa-google
|
%i.fa.fa-google
|
||||||
Import projects from Google Code
|
Import projects from Google Code
|
||||||
|
|
||||||
%p.light
|
- if @repos.any?
|
||||||
Select projects you want to import.
|
%p.light
|
||||||
%p.light
|
Select projects you want to import.
|
||||||
Optionally, you can
|
%p.light
|
||||||
= link_to "customize", new_user_map_import_google_code_path
|
Optionally, you can
|
||||||
how Google Code email addresses and usernames are imported into GitLab.
|
= link_to "customize", new_user_map_import_google_code_path
|
||||||
%hr
|
how Google Code email addresses and usernames are imported into GitLab.
|
||||||
%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
|
||||||
@@ -44,6 +48,22 @@
|
|||||||
= "#{current_user.username}/#{repo.name}"
|
= "#{current_user.username}/#{repo.name}"
|
||||||
%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.id}"}
|
||||||
|
%td
|
||||||
|
= link_to repo.name, "https://code.google.com/p/#{repo.name}", 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 Google Code projects cannot be imported into GitLab
|
||||||
|
directly because they use Subversion or Mercurial for version control,
|
||||||
|
rather than Git. Please convert them to Git on Google Code, and go
|
||||||
|
through the
|
||||||
|
= link_to "import flow", new_import_google_code_path
|
||||||
|
again.
|
||||||
|
|
||||||
:coffeescript
|
:coffeescript
|
||||||
new ImporterStatus("#{jobs_import_google_code_path}", "#{import_google_code_path}")
|
new ImporterStatus("#{jobs_import_google_code_path}", "#{import_google_code_path}")
|
||||||
|
|||||||
@@ -21,6 +21,10 @@ module Gitlab
|
|||||||
@repos ||= raw_data["projects"].map { |raw_repo| GoogleCodeImport::Repository.new(raw_repo) }.select(&:git?)
|
@repos ||= raw_data["projects"].map { |raw_repo| GoogleCodeImport::Repository.new(raw_repo) }.select(&:git?)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def incompatible_repos
|
||||||
|
@incompatible_repos ||= raw_data["projects"].map { |raw_repo| GoogleCodeImport::Repository.new(raw_repo) }.reject(&:git?)
|
||||||
|
end
|
||||||
|
|
||||||
def repo(id)
|
def repo(id)
|
||||||
repos.find { |repo| repo.id == id }
|
repos.find { |repo| repo.id == id }
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -27,21 +27,34 @@ describe Import::GoogleCodeController do
|
|||||||
it "assigns variables" do
|
it "assigns variables" do
|
||||||
@project = create(:project, import_type: 'google_code', creator_id: user.id)
|
@project = create(:project, import_type: 'google_code', creator_id: user.id)
|
||||||
controller.stub_chain(:client, :repos).and_return([@repo])
|
controller.stub_chain(:client, :repos).and_return([@repo])
|
||||||
|
controller.stub_chain(:client, :incompatible_repos).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
|
||||||
@project = create(:project, import_type: 'google_code', creator_id: user.id, import_source: 'vim')
|
@project = create(:project, import_type: 'google_code', creator_id: user.id, import_source: 'vim')
|
||||||
controller.stub_chain(:client, :repos).and_return([@repo])
|
controller.stub_chain(:client, :repos).and_return([@repo])
|
||||||
|
controller.stub_chain(:client, :incompatible_repos).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([])
|
expect(assigns(:repos)).to eq([])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "does not show any invalid projects" do
|
||||||
|
controller.stub_chain(:client, :repos).and_return([])
|
||||||
|
controller.stub_chain(:client, :incompatible_repos).and_return([@repo])
|
||||||
|
|
||||||
|
get :status
|
||||||
|
|
||||||
|
expect(assigns(:repos)).to be_empty
|
||||||
|
expect(assigns(:incompatible_repos)).to eq([@repo])
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ describe Gitlab::GoogleCodeImport::Client do
|
|||||||
describe "#repos" do
|
describe "#repos" do
|
||||||
it "returns only Git repositories" do
|
it "returns only Git repositories" do
|
||||||
expect(subject.repos.length).to eq(1)
|
expect(subject.repos.length).to eq(1)
|
||||||
|
expect(subject.incompatible_repos.length).to eq(1)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user