Migrate Gitlab::Git::Repository#write_config to Gitaly
- Add tests for Repository#write_config
This commit is contained in:
parent
08e013431a
commit
28bbb4cb47
5 changed files with 66 additions and 2 deletions
|
@ -1 +1 @@
|
|||
0.76.0
|
||||
0.77.0
|
||||
|
|
|
@ -6,6 +6,7 @@ module Gitlab
|
|||
|
||||
CommandError = Class.new(StandardError)
|
||||
CommitError = Class.new(StandardError)
|
||||
OSError = Class.new(StandardError)
|
||||
|
||||
class << self
|
||||
include Gitlab::EncodingHelper
|
||||
|
|
|
@ -1311,7 +1311,15 @@ module Gitlab
|
|||
# rubocop:enable Metrics/ParameterLists
|
||||
|
||||
def write_config(full_path:)
|
||||
rugged.config['gitlab.fullpath'] = full_path if full_path.present?
|
||||
return unless full_path.present?
|
||||
|
||||
gitaly_migrate(:write_config) do |is_enabled|
|
||||
if is_enabled
|
||||
gitaly_repository_client.write_config(full_path: full_path)
|
||||
else
|
||||
rugged_write_config(full_path: full_path)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def gitaly_repository
|
||||
|
@ -1451,6 +1459,10 @@ module Gitlab
|
|||
end
|
||||
end
|
||||
|
||||
def rugged_write_config(full_path:)
|
||||
rugged.config['gitlab.fullpath'] = full_path
|
||||
end
|
||||
|
||||
def shell_write_ref(ref_path, ref, old_ref)
|
||||
raise ArgumentError, "invalid ref_path #{ref_path.inspect}" if ref_path.include?(' ')
|
||||
raise ArgumentError, "invalid ref #{ref.inspect}" if ref.include?("\x00")
|
||||
|
|
|
@ -219,6 +219,19 @@ module Gitlab
|
|||
|
||||
true
|
||||
end
|
||||
|
||||
def write_config(full_path:)
|
||||
request = Gitaly::WriteConfigRequest.new(repository: @gitaly_repo, full_path: full_path)
|
||||
response = GitalyClient.call(
|
||||
@storage,
|
||||
:repository_service,
|
||||
:write_config,
|
||||
request,
|
||||
timeout: GitalyClient.fast_timeout
|
||||
)
|
||||
|
||||
raise Gitlab::Git::OSError.new(response.error) unless response.error.empty?
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1790,6 +1790,44 @@ describe Gitlab::Git::Repository, seed_helper: true do
|
|||
end
|
||||
end
|
||||
|
||||
describe '#write_config' do
|
||||
before do
|
||||
repository.rugged.config["gitlab.fullpath"] = repository.path
|
||||
end
|
||||
|
||||
shared_examples 'writing repo config' do
|
||||
context 'is given a path' do
|
||||
it 'writes it to disk' do
|
||||
repository.write_config(full_path: "not-the/real-path.git")
|
||||
|
||||
config = File.read(File.join(repository.path, "config"))
|
||||
|
||||
expect(config).to include("[gitlab]")
|
||||
expect(config).to include("fullpath = not-the/real-path.git")
|
||||
end
|
||||
end
|
||||
|
||||
context 'it is given an empty path' do
|
||||
it 'does not write it to disk' do
|
||||
repository.write_config(full_path: "")
|
||||
|
||||
config = File.read(File.join(repository.path, "config"))
|
||||
|
||||
expect(config).to include("[gitlab]")
|
||||
expect(config).to include("fullpath = #{repository.path}")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context "when gitaly_write_config is enabled" do
|
||||
it_behaves_like "writing repo config"
|
||||
end
|
||||
|
||||
context "when gitaly_write_config is disabled", :disable_gitaly do
|
||||
it_behaves_like "writing repo config"
|
||||
end
|
||||
end
|
||||
|
||||
describe '#merge' do
|
||||
let(:repository) do
|
||||
Gitlab::Git::Repository.new('default', TEST_MUTABLE_REPO_PATH, '')
|
||||
|
|
Loading…
Reference in a new issue