diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 12decbbfeee2ea707b1c11f6d8a022bc23d21c95..6428e0196a859d088fab55426323624a1f68a85e 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -443,6 +443,7 @@ def project_params(attributes: []) params.require(:project) .permit(project_params_attributes + attributes) .merge(import_url_params) + .merge(object_format_params) end def project_feature_attributes @@ -513,7 +514,6 @@ def project_params_attributes :merge_method, :initialize_with_sast, :initialize_with_readme, - :use_sha256_repository, :ci_separated_caches, :suggestion_commit_message, :packages_enabled, @@ -532,6 +532,12 @@ def custom_import_params {} end + def object_format_params + return {} unless Gitlab::Utils.to_boolean(params.dig(:project, :use_sha256_repository)) + + { repository_object_format: Repository::FORMAT_SHA256 } + end + def active_new_project_tab project_params[:import_url].present? ? 'import' : 'blank' end diff --git a/app/services/projects/create_service.rb b/app/services/projects/create_service.rb index e4b0fca729af8beb12ac4d71fe4ad188e4fab78c..6f29c72e25af7fce3d42701d2e070a30910b8fec 100644 --- a/app/services/projects/create_service.rb +++ b/app/services/projects/create_service.rb @@ -13,11 +13,11 @@ def initialize(user, params) @skip_wiki = @params.delete(:skip_wiki) @initialize_with_sast = Gitlab::Utils.to_boolean(@params.delete(:initialize_with_sast)) @initialize_with_readme = Gitlab::Utils.to_boolean(@params.delete(:initialize_with_readme)) - @use_sha256_repository = Gitlab::Utils.to_boolean(@params.delete(:use_sha256_repository)) && Feature.enabled?(:support_sha256_repositories, user) @import_data = @params.delete(:import_data) @relations_block = @params.delete(:relations_block) @default_branch = @params.delete(:default_branch) @readme_template = @params.delete(:readme_template) + @repository_object_format = @params.delete(:repository_object_format) build_topics end @@ -214,7 +214,10 @@ def create_sast_commit end def repository_object_format - @use_sha256_repository ? Repository::FORMAT_SHA256 : Repository::FORMAT_SHA1 + return Repository::FORMAT_SHA1 unless Feature.enabled?(:support_sha256_repositories, current_user) + return Repository::FORMAT_SHA256 if @repository_object_format == Repository::FORMAT_SHA256 + + Repository::FORMAT_SHA1 end def readme_content diff --git a/spec/services/projects/create_service_spec.rb b/spec/services/projects/create_service_spec.rb index 1da786c9fc4f9ef75d5f6f06ba4d3b09d87a5490..5a7abf6cde802fbbe46c5fa7466c58a682b1443a 100644 --- a/spec/services/projects/create_service_spec.rb +++ b/spec/services/projects/create_service_spec.rb @@ -814,7 +814,7 @@ def wiki_repo(project) context 'when SHA256 format is requested' do let(:project) { create_project(user, opts) } - let(:opts) { super().merge(initialize_with_readme: true, use_sha256_repository: true) } + let(:opts) { super().merge(initialize_with_readme: true, repository_object_format: 'sha256') } before do allow(Gitlab::CurrentSettings).to receive(:default_branch_name).and_return('main')