diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-11-19 08:27:35 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-11-19 08:27:35 +0000 |
commit | 7e9c479f7de77702622631cff2628a9c8dcbc627 (patch) | |
tree | c8f718a08e110ad7e1894510980d2155a6549197 /app/controllers/repositories/lfs_storage_controller.rb | |
parent | e852b0ae16db4052c1c567d9efa4facc81146e88 (diff) | |
download | gitlab-ce-7e9c479f7de77702622631cff2628a9c8dcbc627.tar.gz |
Add latest changes from gitlab-org/gitlab@13-6-stable-eev13.6.0-rc42
Diffstat (limited to 'app/controllers/repositories/lfs_storage_controller.rb')
-rw-r--r-- | app/controllers/repositories/lfs_storage_controller.rb | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/app/controllers/repositories/lfs_storage_controller.rb b/app/controllers/repositories/lfs_storage_controller.rb index 0436b740979..48784842d48 100644 --- a/app/controllers/repositories/lfs_storage_controller.rb +++ b/app/controllers/repositories/lfs_storage_controller.rb @@ -29,7 +29,7 @@ module Repositories def upload_finalize if store_file!(oid, size) - head 200 + head 200, content_type: LfsRequest::CONTENT_TYPE else render plain: 'Unprocessable entity', status: :unprocessable_entity end @@ -59,10 +59,17 @@ module Repositories params[:size].to_i end + def uploaded_file + params[:file] + end + # rubocop: disable CodeReuse/ActiveRecord def store_file!(oid, size) object = LfsObject.find_by(oid: oid, size: size) - unless object&.file&.exists? + + if object + replace_file!(object) unless object.file&.exists? + else object = create_file!(oid, size) end @@ -73,12 +80,19 @@ module Repositories # rubocop: enable CodeReuse/ActiveRecord def create_file!(oid, size) - uploaded_file = params[:file] return unless uploaded_file.is_a?(UploadedFile) LfsObject.create!(oid: oid, size: size, file: uploaded_file) end + def replace_file!(lfs_object) + raise UploadedFile::InvalidPathError unless uploaded_file.is_a?(UploadedFile) + + Gitlab::AppJsonLogger.info(message: "LFS file replaced because it did not exist", oid: oid, size: size) + lfs_object.file = uploaded_file + lfs_object.save! + end + def link_to_project!(object) return unless object |