diff options
author | Stan Hu <stanhu@gmail.com> | 2017-09-29 17:20:56 -0700 |
---|---|---|
committer | Stan Hu <stanhu@gmail.com> | 2017-09-29 23:19:34 -0700 |
commit | 15a8fdb8142eb6a412f8ef772d742c399e91f12a (patch) | |
tree | 414f1293e6cde8fc210628039fc64d492cea7bd5 | |
parent | 171714c9231deb95136088ba1c0621379467de39 (diff) | |
download | gitlab-ce-sh-fix-import-repos.tar.gz |
Fix gitlab-rake gitlab:import:repos tasksh-fix-import-repos
Because of a change in GitLab 9.5.4 to prevent users from assuming control of
a repository already on disk, the import task broke. Imports would fail with
the message, "There is already a repository with that name on disk".
This change skips the validation when the import is done from the
command-line.
Closes #37682
-rw-r--r-- | app/models/project.rb | 2 | ||||
-rw-r--r-- | changelogs/unreleased/sh-fix-import-repos.yml | 5 | ||||
-rw-r--r-- | lib/gitlab/bare_repository_importer.rb | 3 | ||||
-rw-r--r-- | spec/models/project_spec.rb | 11 | ||||
-rw-r--r-- | spec/services/projects/create_service_spec.rb | 9 |
5 files changed, 29 insertions, 1 deletions
diff --git a/app/models/project.rb b/app/models/project.rb index bb3f74c4b89..168d1f01db7 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -72,6 +72,7 @@ class Project < ActiveRecord::Base attr_accessor :old_path_with_namespace attr_accessor :template_name attr_writer :pipeline_status + attr_accessor :skip_disk_validation alias_attribute :title, :name @@ -1020,6 +1021,7 @@ class Project < ActiveRecord::Base # Check if repository already exists on disk def can_create_repository? return false unless repository_storage_path + return true if skip_disk_validation expires_full_path_cache # we need to clear cache to validate renames correctly diff --git a/changelogs/unreleased/sh-fix-import-repos.yml b/changelogs/unreleased/sh-fix-import-repos.yml new file mode 100644 index 00000000000..5764b3bdc01 --- /dev/null +++ b/changelogs/unreleased/sh-fix-import-repos.yml @@ -0,0 +1,5 @@ +--- +title: Fix gitlab-rake gitlab:import:repos task failing +merge_request: +author: +type: fixed diff --git a/lib/gitlab/bare_repository_importer.rb b/lib/gitlab/bare_repository_importer.rb index 9323bfc7fb2..1d98d187805 100644 --- a/lib/gitlab/bare_repository_importer.rb +++ b/lib/gitlab/bare_repository_importer.rb @@ -56,7 +56,8 @@ module Gitlab name: project_path, path: project_path, repository_storage: storage_name, - namespace_id: group&.id + namespace_id: group&.id, + skip_disk_validation: true } project = Projects::CreateService.new(user, project_params).execute diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb index 868a843ab0a..07fad057cd2 100644 --- a/spec/models/project_spec.rb +++ b/spec/models/project_spec.rb @@ -2793,6 +2793,17 @@ describe Project do end end + describe '#can_create_repository?' do + let(:project) { build(:project) } + + it 'skips gitlab-shell exists?' do + project.skip_disk_validation = true + + expect(project.gitlab_shell).not_to receive(:exists?) + expect(project.can_create_repository?).to be_truthy + end + end + describe '#latest_successful_pipeline_for_default_branch' do let(:project) { build(:project) } diff --git a/spec/services/projects/create_service_spec.rb b/spec/services/projects/create_service_spec.rb index c2ec805ea99..35f0c85b0ec 100644 --- a/spec/services/projects/create_service_spec.rb +++ b/spec/services/projects/create_service_spec.rb @@ -209,6 +209,15 @@ describe Projects::CreateService, '#execute' do end end + context 'when skip_disk_validation is used' do + it 'sets the project attribute' do + opts[:skip_disk_validation] = true + project = create_project(user, opts) + + expect(project.skip_disk_validation).to be_truthy + end + end + def create_project(user, opts) Projects::CreateService.new(user, opts).execute end |