summaryrefslogtreecommitdiff
path: root/lib/gitlab/git/lfs_changes.rb
blob: 48434047fcee484c7dcae70d0e60c23adee8cdde (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
module Gitlab
  module Git
    class LfsChanges
      def initialize(repository, newrev)
        @repository = repository
        @newrev = newrev
      end

      def new_pointers(object_limit: nil, not_in: nil)
        @new_pointers ||= begin
          rev_list.new_objects(not_in: not_in, require_path: true) do |object_ids|
            object_ids = object_ids.take(object_limit) if object_limit

            Gitlab::Git::Blob.batch_lfs_pointers(@repository, object_ids)
          end
        end
      end

      def all_pointers
        rev_list.all_objects(require_path: true) do |object_ids|
          Gitlab::Git::Blob.batch_lfs_pointers(@repository, object_ids)
        end
      end

      private

      def rev_list
        Gitlab::Git::RevList.new(@repository, newrev: @newrev)
      end
    end
  end
end