summaryrefslogtreecommitdiff
path: root/app/models
diff options
context:
space:
mode:
authorJames Edwards-Jones <jedwardsjones@gitlab.com>2017-11-08 12:59:48 +0000
committerJames Edwards-Jones <jedwardsjones@gitlab.com>2017-11-09 13:44:20 +0000
commitebd51744729cb1b68754f8ba4d7f9adcec28d58d (patch)
treeff5cc2755ec46060dc83316c484471a3c61cd9f8 /app/models
parent78ea074f42543ef352d497f84dba69c6955d843f (diff)
downloadgitlab-ce-ebd51744729cb1b68754f8ba4d7f9adcec28d58d.tar.gz
Handle forks in Gitlab::Checks::LfsIntegrityjej/fix-lfs-integrity-with-forks
Diffstat (limited to 'app/models')
-rw-r--r--app/models/lfs_object.rb10
-rw-r--r--app/models/project.rb12
2 files changed, 13 insertions, 9 deletions
diff --git a/app/models/lfs_object.rb b/app/models/lfs_object.rb
index b7cf96abe83..fc586fa216e 100644
--- a/app/models/lfs_object.rb
+++ b/app/models/lfs_object.rb
@@ -6,16 +6,8 @@ class LfsObject < ActiveRecord::Base
mount_uploader :file, LfsObjectUploader
- def storage_project(project)
- if project && project.forked?
- storage_project(project.forked_from_project)
- else
- project
- end
- end
-
def project_allowed_access?(project)
- projects.exists?(storage_project(project).id)
+ projects.exists?(project.lfs_storage_project.id)
end
def self.destroy_unreferenced
diff --git a/app/models/project.rb b/app/models/project.rb
index 3a300a4a03c..89db5b1300e 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -1042,6 +1042,18 @@ class Project < ActiveRecord::Base
forked_from_project || fork_network&.root_project
end
+ def lfs_storage_project
+ @lfs_storage_project ||= begin
+ result = self
+
+ # TODO: Make this go to the fork_network root immeadiatly
+ # dependant on the discussion in: https://gitlab.com/gitlab-org/gitlab-ce/issues/39769
+ result = result.fork_source while result&.forked?
+
+ result || self
+ end
+ end
+
def personal?
!group
end