diff options
author | Bob Van Landuyt <bob@vanlanduyt.co> | 2018-04-04 16:40:58 +0200 |
---|---|---|
committer | Bob Van Landuyt <bob@vanlanduyt.co> | 2018-04-04 17:49:30 +0200 |
commit | 99be29822e05cf902cd69ba539c4713a0eeabfcf (patch) | |
tree | 575b39b7fdab3a3030191f61ac0b727ada6f454c | |
parent | 8de8a61a96f01d5a5ca43db76d59dc8e349a9b87 (diff) | |
download | gitlab-ce-bvl-export-import-lfs.tar.gz |
Add helper for accessing lfs_objects for projectbvl-export-import-lfs
This makes accessing LFS Objects for a project easier
project.lfs_storage_project.lfs_objects`
becomes
project.lfs_objects_for_project
This will make the refactor in
https://gitlab.com/gitlab-org/gitlab-ce/issues/39769 easier to deal
with.
-rw-r--r-- | app/controllers/projects/lfs_api_controller.rb | 2 | ||||
-rw-r--r-- | app/models/project.rb | 10 | ||||
-rw-r--r-- | lib/gitlab/checks/lfs_integrity.rb | 3 | ||||
-rw-r--r-- | lib/gitlab/import_export/lfs_restorer.rb | 2 | ||||
-rw-r--r-- | lib/gitlab/import_export/lfs_saver.rb | 2 | ||||
-rw-r--r-- | spec/models/project_spec.rb | 16 |
6 files changed, 30 insertions, 5 deletions
diff --git a/app/controllers/projects/lfs_api_controller.rb b/app/controllers/projects/lfs_api_controller.rb index c77f10ef1dd..b9f674883af 100644 --- a/app/controllers/projects/lfs_api_controller.rb +++ b/app/controllers/projects/lfs_api_controller.rb @@ -41,7 +41,7 @@ class Projects::LfsApiController < Projects::GitHttpClientController def existing_oids @existing_oids ||= begin - storage_project.lfs_objects.where(oid: objects.map { |o| o['oid'].to_s }).pluck(:oid) + project.lfs_objects_for_project.where(oid: objects.map { |o| o['oid'].to_s }).pluck(:oid) end end diff --git a/app/models/project.rb b/app/models/project.rb index 714a15ade9c..d821f948db0 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -1066,6 +1066,16 @@ class Project < ActiveRecord::Base end end + # This will return all `lfs_objects` that are accessible to the project. + # So this might be `self.lfs_objects` if the project is not part of a fork + # network, or it is the base of the fork network. + # + # TODO: refactor this to get the correct lfs objects when implementing + # https://gitlab.com/gitlab-org/gitlab-ce/issues/39769 + def lfs_objects_for_project + lfs_storage_project.lfs_objects + end + def personal? !group end diff --git a/lib/gitlab/checks/lfs_integrity.rb b/lib/gitlab/checks/lfs_integrity.rb index f7276a380dc..e2e26e91d27 100644 --- a/lib/gitlab/checks/lfs_integrity.rb +++ b/lib/gitlab/checks/lfs_integrity.rb @@ -15,8 +15,7 @@ module Gitlab return false unless new_lfs_pointers.present? - existing_count = @project.lfs_storage_project - .lfs_objects + existing_count = @project.lfs_objects_for_project .where(oid: new_lfs_pointers.map(&:lfs_oid)) .count diff --git a/lib/gitlab/import_export/lfs_restorer.rb b/lib/gitlab/import_export/lfs_restorer.rb index 4f144d5c8e6..fdf0c28a9ad 100644 --- a/lib/gitlab/import_export/lfs_restorer.rb +++ b/lib/gitlab/import_export/lfs_restorer.rb @@ -28,7 +28,7 @@ module Gitlab lfs_object = LfsObject.find_or_initialize_by(oid: oid, size: size) lfs_object.file = File.open(path) unless lfs_object.file&.exists? - @project.lfs_storage_project.lfs_objects << lfs_object + @project.lfs_objects_for_project << lfs_object end def lfs_file_paths diff --git a/lib/gitlab/import_export/lfs_saver.rb b/lib/gitlab/import_export/lfs_saver.rb index 2e3b9ea200d..cab744def7e 100644 --- a/lib/gitlab/import_export/lfs_saver.rb +++ b/lib/gitlab/import_export/lfs_saver.rb @@ -11,7 +11,7 @@ module Gitlab def save return true if @project.lfs_objects.empty? - @project.lfs_storage_project.lfs_objects.each do |lfs_object| + @project.lfs_objects_for_project.each do |lfs_object| save_lfs_object(lfs_object) end diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb index 0e560be9eaa..94fea5c4d7c 100644 --- a/spec/models/project_spec.rb +++ b/spec/models/project_spec.rb @@ -2022,6 +2022,22 @@ describe Project do expect(forked_project.lfs_storage_project).to eq forked_project end end + + describe '#lfs_objects_for_project' do + let(:lfs_object) { create(:lfs_object) } + + before do + project.lfs_objects << lfs_object + end + + it 'returns the lfs object for a project' do + expect(project.lfs_objects_for_project).to contain_exactly(lfs_object) + end + + it 'returns the lfs object for a fork' do + expect(forked_project.lfs_objects_for_project).to contain_exactly(lfs_object) + end + end end describe '#pushes_since_gc' do |