Incorporate RepositoryService.ApplyGitattributes Gitaly RPC
This commit is contained in:
parent
0296700207
commit
c463a83405
|
@ -1 +1 @@
|
||||||
0.30.0
|
0.31.0
|
||||||
|
|
|
@ -653,33 +653,15 @@ module Gitlab
|
||||||
|
|
||||||
# Gitaly migration: https://gitlab.com/gitlab-org/gitaly/issues/328
|
# Gitaly migration: https://gitlab.com/gitlab-org/gitaly/issues/328
|
||||||
def copy_gitattributes(ref)
|
def copy_gitattributes(ref)
|
||||||
begin
|
Gitlab::GitalyClient.migrate(:apply_gitattributes) do |is_enabled|
|
||||||
commit = lookup(ref)
|
if is_enabled
|
||||||
rescue Rugged::ReferenceError
|
gitaly_copy_gitattributes(ref)
|
||||||
raise InvalidRef.new("Ref #{ref} is invalid")
|
else
|
||||||
|
rugged_copy_gitattributes(ref)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Create the paths
|
|
||||||
info_dir_path = File.join(path, 'info')
|
|
||||||
info_attributes_path = File.join(info_dir_path, 'attributes')
|
|
||||||
|
|
||||||
begin
|
|
||||||
# Retrieve the contents of the blob
|
|
||||||
gitattributes_content = blob_content(commit, '.gitattributes')
|
|
||||||
rescue InvalidBlobName
|
|
||||||
# No .gitattributes found. Should now remove any info/attributes and return
|
|
||||||
File.delete(info_attributes_path) if File.exist?(info_attributes_path)
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
# Create the info directory if needed
|
|
||||||
Dir.mkdir(info_dir_path) unless File.directory?(info_dir_path)
|
|
||||||
|
|
||||||
# Write the contents of the .gitattributes file to info/attributes
|
|
||||||
# Use binary mode to prevent Rails from converting ASCII-8BIT to UTF-8
|
|
||||||
File.open(info_attributes_path, "wb") do |file|
|
|
||||||
file.write(gitattributes_content)
|
|
||||||
end
|
end
|
||||||
|
rescue GRPC::InvalidArgument
|
||||||
|
raise InvalidRef
|
||||||
end
|
end
|
||||||
|
|
||||||
# Returns the Git attributes for the given file path.
|
# Returns the Git attributes for the given file path.
|
||||||
|
@ -1012,6 +994,40 @@ module Gitlab
|
||||||
|
|
||||||
raw_output.compact
|
raw_output.compact
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def gitaly_copy_gitattributes(revision)
|
||||||
|
gitaly_repository_client.apply_gitattributes(revision)
|
||||||
|
end
|
||||||
|
|
||||||
|
def rugged_copy_gitattributes(ref)
|
||||||
|
begin
|
||||||
|
commit = lookup(ref)
|
||||||
|
rescue Rugged::ReferenceError
|
||||||
|
raise InvalidRef.new("Ref #{ref} is invalid")
|
||||||
|
end
|
||||||
|
|
||||||
|
# Create the paths
|
||||||
|
info_dir_path = File.join(path, 'info')
|
||||||
|
info_attributes_path = File.join(info_dir_path, 'attributes')
|
||||||
|
|
||||||
|
begin
|
||||||
|
# Retrieve the contents of the blob
|
||||||
|
gitattributes_content = blob_content(commit, '.gitattributes')
|
||||||
|
rescue InvalidBlobName
|
||||||
|
# No .gitattributes found. Should now remove any info/attributes and return
|
||||||
|
File.delete(info_attributes_path) if File.exist?(info_attributes_path)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
# Create the info directory if needed
|
||||||
|
Dir.mkdir(info_dir_path) unless File.directory?(info_dir_path)
|
||||||
|
|
||||||
|
# Write the contents of the .gitattributes file to info/attributes
|
||||||
|
# Use binary mode to prevent Rails from converting ASCII-8BIT to UTF-8
|
||||||
|
File.open(info_attributes_path, "wb") do |file|
|
||||||
|
file.write(gitattributes_content)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -32,6 +32,11 @@ module Gitlab
|
||||||
request = Gitaly::RepositorySizeRequest.new(repository: @gitaly_repo)
|
request = Gitaly::RepositorySizeRequest.new(repository: @gitaly_repo)
|
||||||
GitalyClient.call(@storage, :repository_service, :repository_size, request).size
|
GitalyClient.call(@storage, :repository_service, :repository_size, request).size
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def apply_gitattributes(revision)
|
||||||
|
request = Gitaly::ApplyGitattributesRequest.new(repository: @gitaly_repo, revision: revision)
|
||||||
|
GitalyClient.call(@storage, :repository_service, :apply_gitattributes, request)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -60,4 +60,17 @@ describe Gitlab::GitalyClient::RepositoryService do
|
||||||
client.repository_size
|
client.repository_size
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe '#apply_gitattributes' do
|
||||||
|
let(:revision) { 'master' }
|
||||||
|
|
||||||
|
it 'sends an apply_gitattributes message' do
|
||||||
|
expect_any_instance_of(Gitaly::RepositoryService::Stub)
|
||||||
|
.to receive(:apply_gitattributes)
|
||||||
|
.with(gitaly_request_with_path(storage_name, relative_path), kind_of(Hash))
|
||||||
|
.and_return(double(:apply_gitattributes_response))
|
||||||
|
|
||||||
|
client.apply_gitattributes(revision)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue