Remove Gitlab::Git::Repository#find_all
This commit is contained in:
		
							parent
							
								
									eacce60b17
								
							
						
					
					
						commit
						144e37c667
					
				|  | @ -113,7 +113,7 @@ module Network | ||||||
| 
 | 
 | ||||||
|       opts[:ref] = @commit.id if @filter_ref |       opts[:ref] = @commit.id if @filter_ref | ||||||
| 
 | 
 | ||||||
|       @repo.find_commits(opts) |       Gitlab::Git::Commit.find_all(@repo.raw_repository, opts) | ||||||
|     end |     end | ||||||
| 
 | 
 | ||||||
|     def commits_sort_by_ref |     def commits_sort_by_ref | ||||||
|  |  | ||||||
|  | @ -104,9 +104,68 @@ module Gitlab | ||||||
|           [] |           [] | ||||||
|         end |         end | ||||||
| 
 | 
 | ||||||
|         # Delegate Repository#find_commits |         # Returns commits collection | ||||||
|  |         # | ||||||
|  |         # Ex. | ||||||
|  |         #   Commit.find_all( | ||||||
|  |         #     repo, | ||||||
|  |         #     ref: 'master', | ||||||
|  |         #     max_count: 10, | ||||||
|  |         #     skip: 5, | ||||||
|  |         #     order: :date | ||||||
|  |         #   ) | ||||||
|  |         # | ||||||
|  |         #   +options+ is a Hash of optional arguments to git | ||||||
|  |         #     :ref is the ref from which to begin (SHA1 or name) | ||||||
|  |         #     :contains is the commit contained by the refs from which to begin (SHA1 or name) | ||||||
|  |         #     :max_count is the maximum number of commits to fetch | ||||||
|  |         #     :skip is the number of commits to skip | ||||||
|  |         #     :order is the commits order and allowed value is :none (default), :date, | ||||||
|  |         #        :topo, or any combination of them (in an array). Commit ordering types | ||||||
|  |         #        are documented here: | ||||||
|  |         #        http://www.rubydoc.info/github/libgit2/rugged/Rugged#SORT_NONE-constant) | ||||||
|  |         # | ||||||
|         def find_all(repo, options = {}) |         def find_all(repo, options = {}) | ||||||
|           repo.find_commits(options) |           actual_options = options.dup | ||||||
|  | 
 | ||||||
|  |           allowed_options = [:ref, :max_count, :skip, :contains, :order] | ||||||
|  | 
 | ||||||
|  |           actual_options.keep_if do |key| | ||||||
|  |             allowed_options.include?(key) | ||||||
|  |           end | ||||||
|  | 
 | ||||||
|  |           default_options = { skip: 0 } | ||||||
|  |           actual_options = default_options.merge(actual_options) | ||||||
|  | 
 | ||||||
|  |           rugged = repo.rugged | ||||||
|  |           walker = Rugged::Walker.new(rugged) | ||||||
|  | 
 | ||||||
|  |           if actual_options[:ref] | ||||||
|  |             walker.push(rugged.rev_parse_oid(actual_options[:ref])) | ||||||
|  |           elsif actual_options[:contains] | ||||||
|  |             repo.branches_contains(actual_options[:contains]).each do |branch| | ||||||
|  |               walker.push(branch.target_id) | ||||||
|  |             end | ||||||
|  |           else | ||||||
|  |             rugged.references.each("refs/heads/*") do |ref| | ||||||
|  |               walker.push(ref.target_id) | ||||||
|  |             end | ||||||
|  |           end | ||||||
|  | 
 | ||||||
|  |           walker.sorting(rugged_sort_type(actual_options[:order])) | ||||||
|  | 
 | ||||||
|  |           commits = [] | ||||||
|  |           offset = actual_options[:skip] | ||||||
|  |           limit = actual_options[:max_count] | ||||||
|  |           walker.each(offset: offset, limit: limit) do |commit| | ||||||
|  |             commits.push(decorate(commit)) | ||||||
|  |           end | ||||||
|  | 
 | ||||||
|  |           walker.reset | ||||||
|  | 
 | ||||||
|  |           commits | ||||||
|  |         rescue Rugged::OdbError | ||||||
|  |           [] | ||||||
|         end |         end | ||||||
| 
 | 
 | ||||||
|         def decorate(commit, ref = nil) |         def decorate(commit, ref = nil) | ||||||
|  | @ -131,6 +190,20 @@ module Gitlab | ||||||
|           diff.find_similar!(break_rewrites: break_rewrites) |           diff.find_similar!(break_rewrites: break_rewrites) | ||||||
|           diff |           diff | ||||||
|         end |         end | ||||||
|  | 
 | ||||||
|  |         # Returns the `Rugged` sorting type constant for one or more given | ||||||
|  |         # sort types. Valid keys are `:none`, `:topo`, and `:date`, or an array | ||||||
|  |         # containing more than one of them. `:date` uses a combination of date and | ||||||
|  |         # topological sorting to closer mimic git's native ordering. | ||||||
|  |         def rugged_sort_type(sort_type) | ||||||
|  |           @rugged_sort_types ||= { | ||||||
|  |             none: Rugged::SORT_NONE, | ||||||
|  |             topo: Rugged::SORT_TOPO, | ||||||
|  |             date: Rugged::SORT_DATE | Rugged::SORT_TOPO | ||||||
|  |           } | ||||||
|  | 
 | ||||||
|  |           @rugged_sort_types.fetch(sort_type, Rugged::SORT_NONE) | ||||||
|  |         end | ||||||
|       end |       end | ||||||
| 
 | 
 | ||||||
|       def initialize(raw_commit, head = nil) |       def initialize(raw_commit, head = nil) | ||||||
|  |  | ||||||
|  | @ -494,70 +494,6 @@ module Gitlab | ||||||
|         end |         end | ||||||
|       end |       end | ||||||
| 
 | 
 | ||||||
|       # Returns commits collection |  | ||||||
|       # |  | ||||||
|       # Ex. |  | ||||||
|       #   repo.find_commits( |  | ||||||
|       #     ref: 'master', |  | ||||||
|       #     max_count: 10, |  | ||||||
|       #     skip: 5, |  | ||||||
|       #     order: :date |  | ||||||
|       #   ) |  | ||||||
|       # |  | ||||||
|       #   +options+ is a Hash of optional arguments to git |  | ||||||
|       #     :ref is the ref from which to begin (SHA1 or name) |  | ||||||
|       #     :contains is the commit contained by the refs from which to begin (SHA1 or name) |  | ||||||
|       #     :max_count is the maximum number of commits to fetch |  | ||||||
|       #     :skip is the number of commits to skip |  | ||||||
|       #     :order is the commits order and allowed value is :none (default), :date, |  | ||||||
|       #        :topo, or any combination of them (in an array). Commit ordering types |  | ||||||
|       #        are documented here: |  | ||||||
|       #        http://www.rubydoc.info/github/libgit2/rugged/Rugged#SORT_NONE-constant) |  | ||||||
|       # |  | ||||||
|       def find_commits(options = {}) |  | ||||||
|         actual_options = options.dup |  | ||||||
| 
 |  | ||||||
|         allowed_options = [:ref, :max_count, :skip, :contains, :order] |  | ||||||
| 
 |  | ||||||
|         actual_options.keep_if do |key| |  | ||||||
|           allowed_options.include?(key) |  | ||||||
|         end |  | ||||||
| 
 |  | ||||||
|         default_options = { skip: 0 } |  | ||||||
|         actual_options = default_options.merge(actual_options) |  | ||||||
| 
 |  | ||||||
|         walker = Rugged::Walker.new(rugged) |  | ||||||
| 
 |  | ||||||
|         if actual_options[:ref] |  | ||||||
|           walker.push(rugged.rev_parse_oid(actual_options[:ref])) |  | ||||||
|         elsif actual_options[:contains] |  | ||||||
|           branches_contains(actual_options[:contains]).each do |branch| |  | ||||||
|             walker.push(branch.target_id) |  | ||||||
|           end |  | ||||||
|         else |  | ||||||
|           rugged.references.each("refs/heads/*") do |ref| |  | ||||||
|             walker.push(ref.target_id) |  | ||||||
|           end |  | ||||||
|         end |  | ||||||
| 
 |  | ||||||
|         sort_type = rugged_sort_type(actual_options[:order]) |  | ||||||
|         walker.sorting(sort_type) |  | ||||||
| 
 |  | ||||||
|         commits = [] |  | ||||||
|         offset = actual_options[:skip] |  | ||||||
|         limit = actual_options[:max_count] |  | ||||||
|         walker.each(offset: offset, limit: limit) do |commit| |  | ||||||
|           gitlab_commit = Gitlab::Git::Commit.decorate(commit) |  | ||||||
|           commits.push(gitlab_commit) |  | ||||||
|         end |  | ||||||
| 
 |  | ||||||
|         walker.reset |  | ||||||
| 
 |  | ||||||
|         commits |  | ||||||
|       rescue Rugged::OdbError |  | ||||||
|         [] |  | ||||||
|       end |  | ||||||
| 
 |  | ||||||
|       # Returns branch names collection that contains the special commit(SHA1 |       # Returns branch names collection that contains the special commit(SHA1 | ||||||
|       # or name) |       # or name) | ||||||
|       # |       # | ||||||
|  | @ -1228,20 +1164,6 @@ module Gitlab | ||||||
|       rescue GRPC::BadStatus => e |       rescue GRPC::BadStatus => e | ||||||
|         raise CommandError.new(e) |         raise CommandError.new(e) | ||||||
|       end |       end | ||||||
| 
 |  | ||||||
|       # Returns the `Rugged` sorting type constant for one or more given |  | ||||||
|       # sort types. Valid keys are `:none`, `:topo`, and `:date`, or an array |  | ||||||
|       # containing more than one of them. `:date` uses a combination of date and |  | ||||||
|       # topological sorting to closer mimic git's native ordering. |  | ||||||
|       def rugged_sort_type(sort_type) |  | ||||||
|         @rugged_sort_types ||= { |  | ||||||
|           none: Rugged::SORT_NONE, |  | ||||||
|           topo: Rugged::SORT_TOPO, |  | ||||||
|           date: Rugged::SORT_DATE | Rugged::SORT_TOPO |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         @rugged_sort_types.fetch(sort_type, Rugged::SORT_NONE) |  | ||||||
|       end |  | ||||||
|     end |     end | ||||||
|   end |   end | ||||||
| end | end | ||||||
|  |  | ||||||
|  | @ -244,6 +244,33 @@ describe Gitlab::Git::Commit, seed_helper: true do | ||||||
|     end |     end | ||||||
| 
 | 
 | ||||||
|     describe '.find_all' do |     describe '.find_all' do | ||||||
|  |       it 'should return a return a collection of commits' do | ||||||
|  |         commits = described_class.find_all(repository) | ||||||
|  | 
 | ||||||
|  |         expect(commits).not_to be_empty | ||||||
|  |         expect(commits).to all( be_a_kind_of(Gitlab::Git::Commit) ) | ||||||
|  |       end | ||||||
|  | 
 | ||||||
|  |       context 'while applying a sort order based on the `order` option' do | ||||||
|  |         it "allows ordering topologically (no parents shown before their children)" do | ||||||
|  |           expect_any_instance_of(Rugged::Walker).to receive(:sorting).with(Rugged::SORT_TOPO) | ||||||
|  | 
 | ||||||
|  |           described_class.find_all(repository, order: :topo) | ||||||
|  |         end | ||||||
|  | 
 | ||||||
|  |         it "allows ordering by date" do | ||||||
|  |           expect_any_instance_of(Rugged::Walker).to receive(:sorting).with(Rugged::SORT_DATE | Rugged::SORT_TOPO) | ||||||
|  | 
 | ||||||
|  |           described_class.find_all(repository, order: :date) | ||||||
|  |         end | ||||||
|  | 
 | ||||||
|  |         it "applies no sorting by default" do | ||||||
|  |           expect_any_instance_of(Rugged::Walker).to receive(:sorting).with(Rugged::SORT_NONE) | ||||||
|  | 
 | ||||||
|  |           described_class.find_all(repository) | ||||||
|  |         end | ||||||
|  |       end | ||||||
|  | 
 | ||||||
|       context 'max_count' do |       context 'max_count' do | ||||||
|         subject do |         subject do | ||||||
|           commits = Gitlab::Git::Commit.find_all( |           commits = Gitlab::Git::Commit.find_all( | ||||||
|  |  | ||||||
|  | @ -1101,35 +1101,6 @@ describe Gitlab::Git::Repository, seed_helper: true do | ||||||
|     end |     end | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   describe '#find_commits' do |  | ||||||
|     it 'should return a return a collection of commits' do |  | ||||||
|       commits = repository.find_commits |  | ||||||
| 
 |  | ||||||
|       expect(commits).not_to be_empty |  | ||||||
|       expect(commits).to all( be_a_kind_of(Gitlab::Git::Commit) ) |  | ||||||
|     end |  | ||||||
| 
 |  | ||||||
|     context 'while applying a sort order based on the `order` option' do |  | ||||||
|       it "allows ordering topologically (no parents shown before their children)" do |  | ||||||
|         expect_any_instance_of(Rugged::Walker).to receive(:sorting).with(Rugged::SORT_TOPO) |  | ||||||
| 
 |  | ||||||
|         repository.find_commits(order: :topo) |  | ||||||
|       end |  | ||||||
| 
 |  | ||||||
|       it "allows ordering by date" do |  | ||||||
|         expect_any_instance_of(Rugged::Walker).to receive(:sorting).with(Rugged::SORT_DATE | Rugged::SORT_TOPO) |  | ||||||
| 
 |  | ||||||
|         repository.find_commits(order: :date) |  | ||||||
|       end |  | ||||||
| 
 |  | ||||||
|       it "applies no sorting by default" do |  | ||||||
|         expect_any_instance_of(Rugged::Walker).to receive(:sorting).with(Rugged::SORT_NONE) |  | ||||||
| 
 |  | ||||||
|         repository.find_commits |  | ||||||
|       end |  | ||||||
|     end |  | ||||||
|   end |  | ||||||
| 
 |  | ||||||
|   describe '#branches with deleted branch' do |   describe '#branches with deleted branch' do | ||||||
|     before(:each) do |     before(:each) do | ||||||
|       ref = double() |       ref = double() | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue