Sha256: e59659393dbb2bd26cbdec356fecd26a429ad11e447fc405d42e7c5fca706966

Contents?: true

Size: 1.07 KB

Versions: 49

Compression:

Stored size: 1.07 KB

Contents

# frozen_string_literal: true

require 'avm/result'

module Avm
  module Git
    module Issue
      class Complete
        def commits_result
          ::Avm::Result.success_or_error(
            commits.any? ? 'yes' : 'none',
            commits.any?
          )
        end

        def commits_uncached
          return [] unless branch_hash && follow_master?

          interval = remote_master_hash ? "#{remote_master_hash}..#{branch_hash}" : branch_hash
          @git.execute!('rev-list', interval).each_line.map(&:strip)
        end

        def bifurcations_result
          commits.each do |commit|
            if multiple_parents?(commit)
              return ::Avm::Result.error("#{commit} has multiple parents")
            end
          end
          ::Avm::Result.success('no')
        end

        def multiple_parents?(commit)
          commit_parents(commit).count > 1
        end

        def commit_parents(commit)
          @git.execute!('log', '--pretty=%P', '-n', '1', commit).split(' ').map(&:strip)
              .select(&:present?)
        end
      end
    end
  end
end

Version data entries

49 entries across 49 versions & 1 rubygems

Version Path
avm-tools-0.52.0 lib/avm/git/issue/complete/_commits.rb
avm-tools-0.51.0 lib/avm/git/issue/complete/_commits.rb
avm-tools-0.50.0 lib/avm/git/issue/complete/_commits.rb
avm-tools-0.49.0 lib/avm/git/issue/complete/_commits.rb
avm-tools-0.48.0 lib/avm/git/issue/complete/_commits.rb
avm-tools-0.47.0 lib/avm/git/issue/complete/_commits.rb
avm-tools-0.46.0 lib/avm/git/issue/complete/_commits.rb
avm-tools-0.45.0 lib/avm/git/issue/complete/_commits.rb
avm-tools-0.44.2 lib/avm/git/issue/complete/_commits.rb
avm-tools-0.44.1 lib/avm/git/issue/complete/_commits.rb
avm-tools-0.44.0 lib/avm/git/issue/complete/_commits.rb
avm-tools-0.43.0 lib/avm/git/issue/complete/_commits.rb
avm-tools-0.42.0 lib/avm/git/issue/complete/_commits.rb
avm-tools-0.41.0 lib/avm/git/issue/complete/_commits.rb
avm-tools-0.40.0 lib/avm/git/issue/complete/_commits.rb
avm-tools-0.39.0 lib/avm/git/issue/complete/_commits.rb
avm-tools-0.38.0 lib/avm/git/issue/complete/_commits.rb
avm-tools-0.37.1 lib/avm/git/issue/complete/_commits.rb
avm-tools-0.37.0 lib/avm/git/issue/complete/_commits.rb
avm-tools-0.36.0 lib/avm/git/issue/complete/_commits.rb