diff options
Diffstat (limited to 'app/models/repository.rb')
-rw-r--r-- | app/models/repository.rb | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/app/models/repository.rb b/app/models/repository.rb index 3fd7b6126d8..4100218944f 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -696,14 +696,22 @@ class Repository end def head_tree(skip_flat_paths: true) - if head_commit + if Feature.enabled?(:optimized_head_tree) + return if empty? || root_ref.nil? + + @head_tree ||= Tree.new(self, root_ref, nil, skip_flat_paths: skip_flat_paths) + elsif head_commit @head_tree ||= Tree.new(self, head_commit.sha, nil, skip_flat_paths: skip_flat_paths) end end def tree(sha = :head, path = nil, recursive: false, skip_flat_paths: true, pagination_params: nil) if sha == :head - return unless head_commit + if Feature.enabled?(:optimized_head_tree) + return if empty? || root_ref.nil? + else + return unless head_commit + end if path.nil? return head_tree(skip_flat_paths: skip_flat_paths) |