Fix uploading of LFS tracked file through UI
This commit is contained in:
parent
38d57a61b6
commit
e20e062737
3 changed files with 32 additions and 1 deletions
|
@ -24,7 +24,7 @@ module Lfs
|
||||||
|
|
||||||
def new_file(file_path, file_content, encoding: nil)
|
def new_file(file_path, file_content, encoding: nil)
|
||||||
if project.lfs_enabled? && lfs_file?(file_path)
|
if project.lfs_enabled? && lfs_file?(file_path)
|
||||||
file_content = Base64.decode64(file_content) if encoding == 'base64'
|
file_content = parse_file_content(file_content, encoding: encoding)
|
||||||
lfs_pointer_file = Gitlab::Git::LfsPointerFile.new(file_content)
|
lfs_pointer_file = Gitlab::Git::LfsPointerFile.new(file_content)
|
||||||
lfs_object = create_lfs_object!(lfs_pointer_file, file_content)
|
lfs_object = create_lfs_object!(lfs_pointer_file, file_content)
|
||||||
|
|
||||||
|
@ -66,5 +66,12 @@ module Lfs
|
||||||
def link_lfs_object!(lfs_object)
|
def link_lfs_object!(lfs_object)
|
||||||
project.lfs_objects << lfs_object
|
project.lfs_objects << lfs_object
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def parse_file_content(file_content, encoding: nil)
|
||||||
|
return file_content.read if file_content.respond_to?(:read)
|
||||||
|
return Base64.decode64(file_content) if encoding == 'base64'
|
||||||
|
|
||||||
|
file_content
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
5
changelogs/unreleased/61203-fix-lfs-ui-upload.yml
Normal file
5
changelogs/unreleased/61203-fix-lfs-ui-upload.yml
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
title: Fix uploading of LFS tracked file through UI
|
||||||
|
merge_request: 28052
|
||||||
|
author:
|
||||||
|
type: fixed
|
|
@ -64,6 +64,25 @@ describe Lfs::FileTransformer do
|
||||||
expect(result.encoding).to eq('text')
|
expect(result.encoding).to eq('text')
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'when an actual file is passed' do
|
||||||
|
let(:file) { Tempfile.new(file_path) }
|
||||||
|
|
||||||
|
before do
|
||||||
|
file.write(file_content)
|
||||||
|
file.rewind
|
||||||
|
end
|
||||||
|
|
||||||
|
after do
|
||||||
|
file.unlink
|
||||||
|
end
|
||||||
|
|
||||||
|
it "creates an LfsObject with the file's content" do
|
||||||
|
subject.new_file(file_path, file)
|
||||||
|
|
||||||
|
expect(LfsObject.last.file.read).to eq file_content
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
context "when doesn't use LFS" do
|
context "when doesn't use LFS" do
|
||||||
let(:file_path) { 'other.filetype' }
|
let(:file_path) { 'other.filetype' }
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue