summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/gitlab/bare_repository_import/repository.rb5
-rw-r--r--spec/lib/gitlab/bare_repository_import/importer_spec.rb4
-rw-r--r--spec/lib/gitlab/bare_repository_import/repository_spec.rb7
3 files changed, 15 insertions, 1 deletions
diff --git a/lib/gitlab/bare_repository_import/repository.rb b/lib/gitlab/bare_repository_import/repository.rb
index 8574ac6eb30..d3971db1c89 100644
--- a/lib/gitlab/bare_repository_import/repository.rb
+++ b/lib/gitlab/bare_repository_import/repository.rb
@@ -34,8 +34,11 @@ module Gitlab
private
def repo_relative_path
+ absolute_path = Pathname.new(repo_path)
+ project_root = Pathname.new(@root_path)
+
# Remove root path and `.git` at the end
- repo_path[@root_path.size...-4]
+ absolute_path.relative_path_from(project_root).to_s.gsub(/\.git$/, '')
end
end
end
diff --git a/spec/lib/gitlab/bare_repository_import/importer_spec.rb b/spec/lib/gitlab/bare_repository_import/importer_spec.rb
index dafec2b0033..52dbfeb2999 100644
--- a/spec/lib/gitlab/bare_repository_import/importer_spec.rb
+++ b/spec/lib/gitlab/bare_repository_import/importer_spec.rb
@@ -134,8 +134,12 @@ describe Gitlab::BareRepositoryImport::Importer, repository: true do
end
it 'moves an existing project to the correct path' do
+ # This is a quick way to get a valid repository instead of copying an existing one
project = create(:project, :repository)
original_commit_count = project.repository.commit_count
+ # We need to destroy the model but keep the repository so that the
+ # importer will attempt to load the repository
+ project.destroy
bare_repo = Gitlab::BareRepositoryImport::Repository.new(project.repository_storage_path, project.repository.path)
gitlab_importer = described_class.new(admin, bare_repo)
diff --git a/spec/lib/gitlab/bare_repository_import/repository_spec.rb b/spec/lib/gitlab/bare_repository_import/repository_spec.rb
index 2db737f5fb6..61b73abcba4 100644
--- a/spec/lib/gitlab/bare_repository_import/repository_spec.rb
+++ b/spec/lib/gitlab/bare_repository_import/repository_spec.rb
@@ -46,6 +46,13 @@ describe ::Gitlab::BareRepositoryImport::Repository do
describe '#project_full_path' do
it 'returns the project full path' do
expect(project_repo_path.repo_path).to eq('/full/path/to/repo.git')
+ expect(project_repo_path.project_full_path).to eq('to/repo')
+ end
+
+ it 'with no trailing slash in the root path' do
+ repo_path = described_class.new('/full/path', '/full/path/to/repo.git')
+
+ expect(repo_path.project_full_path).to eq('to/repo')
end
end
end