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)
|
||||
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_object = create_lfs_object!(lfs_pointer_file, file_content)
|
||||
|
||||
|
@ -66,5 +66,12 @@ module Lfs
|
|||
def link_lfs_object!(lfs_object)
|
||||
project.lfs_objects << lfs_object
|
||||
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
|
||||
|
|
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')
|
||||
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
|
||||
let(:file_path) { 'other.filetype' }
|
||||
|
||||
|
|
Loading…
Reference in a new issue