Migrate Gitlab::Git::Repository#write_config to Gitaly
- Add tests for Repository#write_config
This commit is contained in:
parent
08e013431a
commit
28bbb4cb47
|
@ -1 +1 @@
|
||||||
0.76.0
|
0.77.0
|
||||||
|
|
|
@ -6,6 +6,7 @@ module Gitlab
|
||||||
|
|
||||||
CommandError = Class.new(StandardError)
|
CommandError = Class.new(StandardError)
|
||||||
CommitError = Class.new(StandardError)
|
CommitError = Class.new(StandardError)
|
||||||
|
OSError = Class.new(StandardError)
|
||||||
|
|
||||||
class << self
|
class << self
|
||||||
include Gitlab::EncodingHelper
|
include Gitlab::EncodingHelper
|
||||||
|
|
|
@ -1311,7 +1311,15 @@ module Gitlab
|
||||||
# rubocop:enable Metrics/ParameterLists
|
# rubocop:enable Metrics/ParameterLists
|
||||||
|
|
||||||
def write_config(full_path:)
|
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
|
end
|
||||||
|
|
||||||
def gitaly_repository
|
def gitaly_repository
|
||||||
|
@ -1451,6 +1459,10 @@ module Gitlab
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def rugged_write_config(full_path:)
|
||||||
|
rugged.config['gitlab.fullpath'] = full_path
|
||||||
|
end
|
||||||
|
|
||||||
def shell_write_ref(ref_path, ref, old_ref)
|
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_path #{ref_path.inspect}" if ref_path.include?(' ')
|
||||||
raise ArgumentError, "invalid ref #{ref.inspect}" if ref.include?("\x00")
|
raise ArgumentError, "invalid ref #{ref.inspect}" if ref.include?("\x00")
|
||||||
|
|
|
@ -219,6 +219,19 @@ module Gitlab
|
||||||
|
|
||||||
true
|
true
|
||||||
end
|
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
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1790,6 +1790,44 @@ describe Gitlab::Git::Repository, seed_helper: true do
|
||||||
end
|
end
|
||||||
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
|
describe '#merge' do
|
||||||
let(:repository) do
|
let(:repository) do
|
||||||
Gitlab::Git::Repository.new('default', TEST_MUTABLE_REPO_PATH, '')
|
Gitlab::Git::Repository.new('default', TEST_MUTABLE_REPO_PATH, '')
|
||||||
|
|
Loading…
Reference in New Issue