summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBob Van Landuyt <bob@vanlanduyt.co>2018-04-04 16:40:58 +0200
committerBob Van Landuyt <bob@vanlanduyt.co>2018-04-04 17:49:30 +0200
commit99be29822e05cf902cd69ba539c4713a0eeabfcf (patch)
tree575b39b7fdab3a3030191f61ac0b727ada6f454c
parent8de8a61a96f01d5a5ca43db76d59dc8e349a9b87 (diff)
downloadgitlab-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.rb2
-rw-r--r--app/models/project.rb10
-rw-r--r--lib/gitlab/checks/lfs_integrity.rb3
-rw-r--r--lib/gitlab/import_export/lfs_restorer.rb2
-rw-r--r--lib/gitlab/import_export/lfs_saver.rb2
-rw-r--r--spec/models/project_spec.rb16
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