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