diff --git a/app/models/namespace.rb b/app/models/namespace.rb index 4c2b799cba06a281c776313ef4c7d95bb46641c0..bc186986984455f512e278e67bdadb0bd0c9c71b 100644 --- a/app/models/namespace.rb +++ b/app/models/namespace.rb @@ -830,13 +830,6 @@ def expire_first_auto_devops_config_cache Rails.cache.delete_multi(keys) end - def write_projects_repository_config - all_projects.find_each do |project| - project.set_full_path - project.track_project_repository - end - end - def enforce_minimum_path_length? path_changed? && !project_namespace? end diff --git a/app/models/project.rb b/app/models/project.rb index 76dbd0547bbb998bd41c0ca1ea4878133365db6f..ec77ab7011acbf9d6ffd06dfc0c7e334120351d9 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -2283,16 +2283,6 @@ def mark_pages_onboarding_complete ensure_pages_metadatum.update!(onboarding_complete: true) end - def set_full_path(gl_full_path: full_path) - # We'd need to keep track of project full path otherwise directory tree - # created with hashed storage enabled cannot be usefully imported using - # the import rake task. - repository.raw_repository.set_full_path(full_path: gl_full_path) - rescue Gitlab::Git::Repository::NoRepository => e - Gitlab::AppLogger.error("Error writing to .git/config for project #{full_path} (#{id}): #{e.message}.") - nil - end - def after_import repository.expire_content_cache repository.remove_prohibited_branches @@ -2315,7 +2305,6 @@ def after_import after_create_default_branch join_pool_repository refresh_markdown_cache! - set_full_path end def update_project_counter_caches diff --git a/app/services/projects/after_rename_service.rb b/app/services/projects/after_rename_service.rb index 5cd30689fafcd35902623a12c8e28e95b2a7de23..3f079a14b656d2081b2e2e4156c4d7dfabe477f4 100644 --- a/app/services/projects/after_rename_service.rb +++ b/app/services/projects/after_rename_service.rb @@ -97,7 +97,6 @@ def execute_system_hooks def update_repository_configuration project.reload_repository! - project.set_full_path project.track_project_repository end diff --git a/app/services/projects/create_service.rb b/app/services/projects/create_service.rb index 6f29c72e25af7fce3d42701d2e070a30910b8fec..50f0db3728afaacde7693460a5c5b6bbd7c4146e 100644 --- a/app/services/projects/create_service.rb +++ b/app/services/projects/create_service.rb @@ -112,11 +112,6 @@ def after_create_actions if @project.import? Gitlab::Tracking.event(self.class.name, 'import_project', user: current_user) - else - # Skip writing the config for project imports/forks because it - # will always fail since the Git directory doesn't exist until - # a background job creates it (see Project#add_import_job). - @project.set_full_path end unless @project.gitlab_project_import? diff --git a/app/services/projects/transfer_service.rb b/app/services/projects/transfer_service.rb index 4964821680814df2a670e996df806c0984e9ac49..b128b8a4c5b07dbd1523961bf4b678c21c22445e 100644 --- a/app/services/projects/transfer_service.rb +++ b/app/services/projects/transfer_service.rb @@ -133,7 +133,7 @@ def proceed_to_transfer project.old_path_with_namespace = @old_path - update_repository_configuration(@new_path) + update_repository_configuration remove_issue_contacts @@ -196,8 +196,7 @@ def update_namespace_and_visibility(to_namespace) project.visibility_level = to_namespace.visibility_level unless project.visibility_level_allowed_by_group? end - def update_repository_configuration(full_path) - project.set_full_path(gl_full_path: full_path) + def update_repository_configuration project.track_project_repository end @@ -233,7 +232,7 @@ def refresh_permissions def rollback_side_effects project.reset update_namespace_and_visibility(@old_namespace) - update_repository_configuration(@old_path) + update_repository_configuration end def execute_system_hooks diff --git a/lib/gitlab/git/repository.rb b/lib/gitlab/git/repository.rb index 524737c6a72dd425e9f308309d7cc9712bc47c5b..5238bd9b14218ac4839bcfd79abb5803a506a4ac 100644 --- a/lib/gitlab/git/repository.rb +++ b/lib/gitlab/git/repository.rb @@ -1038,21 +1038,6 @@ def commit_files( end # rubocop:enable Metrics/ParameterLists - def set_full_path(full_path:) - return unless full_path.present? - - # This guard avoids Gitaly log/error spam - raise NoRepository, 'repository does not exist' unless exists? - - gitaly_repository_client.set_full_path(full_path) - end - - def full_path - wrapped_gitaly_errors do - gitaly_repository_client.full_path - end - end - def disconnect_alternates wrapped_gitaly_errors do gitaly_repository_client.disconnect_alternates diff --git a/lib/gitlab/gitaly_client/repository_service.rb b/lib/gitlab/gitaly_client/repository_service.rb index 60d14d18f621d53c31be582e25770ed3056f030c..cdd5168d25bd9e1309ae1dea4f0d2fcfdff75d07 100644 --- a/lib/gitlab/gitaly_client/repository_service.rb +++ b/lib/gitlab/gitaly_client/repository_service.rb @@ -251,33 +251,6 @@ def write_ref(ref_path, ref, old_ref) gitaly_client_call(@storage, :repository_service, :write_ref, request, timeout: GitalyClient.fast_timeout) end - def set_full_path(path) - gitaly_client_call( - @storage, - :repository_service, - :set_full_path, - Gitaly::SetFullPathRequest.new( - repository: @gitaly_repo, - path: path - ), - timeout: GitalyClient.fast_timeout - ) - - nil - end - - def full_path - response = gitaly_client_call( - @storage, - :repository_service, - :full_path, - Gitaly::FullPathRequest.new(repository: @gitaly_repo), - timeout: GitalyClient.fast_timeout - ) - - response.path.presence - end - def find_license request = Gitaly::FindLicenseRequest.new(repository: @gitaly_repo) diff --git a/spec/lib/gitlab/git/repository_spec.rb b/spec/lib/gitlab/git/repository_spec.rb index acd80b49894ab3a1dccf2bda705bacdb7e5584ef..932c557eab3e9ae770d6d202ae2455c6cd3bab68 100644 --- a/spec/lib/gitlab/git/repository_spec.rb +++ b/spec/lib/gitlab/git/repository_spec.rb @@ -2242,52 +2242,6 @@ def create_commit(blobs) end end - describe '#set_full_path' do - let(:full_path) { 'some/path' } - - before do - repository.set_full_path(full_path: full_path) - end - - it 'writes full_path to gitaly' do - repository.set_full_path(full_path: "not-the/real-path.git") - - expect(repository.full_path).to eq('not-the/real-path.git') - end - - context 'it is given an empty path' do - it 'does not write it to disk' do - repository.set_full_path(full_path: "") - - expect(repository.full_path).to eq(full_path) - end - end - - context 'repository does not exist' do - it 'raises NoRepository and does not call SetFullPath' do - repository = Gitlab::Git::Repository.new('default', 'does/not/exist.git', '', 'group/project') - - expect(repository.gitaly_repository_client).not_to receive(:set_full_path) - - expect do - repository.set_full_path(full_path: 'foo/bar.git') - end.to raise_error(Gitlab::Git::Repository::NoRepository) - end - end - end - - describe '#full_path' do - let(:full_path) { 'some/path' } - - before do - repository.set_full_path(full_path: full_path) - end - - it 'returns the full path' do - expect(repository.full_path).to eq(full_path) - end - end - describe '#merge_to_ref' do let(:repository) { mutable_repository } let(:branch_head) { '6d394385cf567f80a8fd85055db1ab4c5295806f' } diff --git a/spec/lib/gitlab/gitaly_client/repository_service_spec.rb b/spec/lib/gitlab/gitaly_client/repository_service_spec.rb index 1e17033c18ba14db7ec7e7d08f7a7f2f9c27bfda..5a4c6e4c3a7aa1aa38ee70a8f8c96cc1a6245756 100644 --- a/spec/lib/gitlab/gitaly_client/repository_service_spec.rb +++ b/spec/lib/gitlab/gitaly_client/repository_service_spec.rb @@ -451,31 +451,6 @@ end end - describe '#set_full_path' do - let(:path) { 'repo/path' } - - it 'sends a set_full_path message' do - expect_any_instance_of(Gitaly::RepositoryService::Stub) - .to receive(:set_full_path) - .with(gitaly_request_with_params(path: path), kind_of(Hash)) - .and_return(double) - - client.set_full_path(path) - end - end - - describe '#full_path' do - let(:path) { 'repo/path' } - - it 'sends a full_path message' do - expect_any_instance_of(Gitaly::RepositoryService::Stub) - .to receive(:full_path) - .and_return(double(path: path)) - - expect(client.full_path).to eq(path) - end - end - describe "#find_license" do it 'sends a find_license request with medium timeout' do expect_any_instance_of(Gitaly::RepositoryService::Stub) diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb index c4f98d6581f8db5a69150668774fab6a649b4c9a..5a3d5c147e5e47bcf94f030fd833da6d94ae2bb5 100644 --- a/spec/models/project_spec.rb +++ b/spec/models/project_spec.rb @@ -6022,7 +6022,6 @@ def has_external_wiki expect(ProjectCacheWorker).to receive(:perform_async).with(project.id, [], [:repository_size, :wiki_size]) expect(DetectRepositoryLanguagesWorker).to receive(:perform_async).with(project.id) expect(AuthorizedProjectUpdate::ProjectRecalculateWorker).to receive(:perform_async).with(project.id) - expect(project).to receive(:set_full_path) project.after_import end @@ -6175,30 +6174,6 @@ def has_external_wiki end end - describe '#set_full_path' do - let_it_be(:project) { create(:project, :repository) } - - let(:repository) { project.repository.raw } - - it 'writes full path in .git/config when key is missing' do - project.set_full_path - - expect(repository.full_path).to eq project.full_path - end - - it 'updates full path in .git/config when key is present' do - project.set_full_path(gl_full_path: 'old/path') - - expect { project.set_full_path }.to change { repository.full_path }.from('old/path').to(project.full_path) - end - - it 'does not raise an error with an empty repository' do - project = create(:project_empty_repo) - - expect { project.set_full_path }.not_to raise_error - end - end - describe '#default_branch' do context 'with default_branch_name' do let_it_be_with_refind(:root_group) { create(:group) } diff --git a/spec/services/projects/create_service_spec.rb b/spec/services/projects/create_service_spec.rb index 61d80fcb0144ab7a6f65fb4861fdf89c3306b4f9..a328cc905c5b8a6959f771ca294a326da841fd85 100644 --- a/spec/services/projects/create_service_spec.rb +++ b/spec/services/projects/create_service_spec.rb @@ -461,10 +461,6 @@ def wiki_repo(project) let(:imported_project) { create_project(user, { name: 'test', import_url: 'http://import-url', import_data: import_data }) } it 'does not write repository config' do - expect_next_instance_of(Project) do |project| - expect(project).not_to receive(:set_full_path) - end - imported_project expect(imported_project.project_namespace).to be_in_sync_with_project(imported_project) end