mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00
bump: skip PR checking when up to date
`brew bump` will check for PRs related to a package even if the package version and livecheck version are the same. We're presumably only interested in related PRs when the livecheck version differs, so we can reduce GitHub API requests by skipping the check(s) when the versions are equal. We use `bump` in `autobump` workflows, so this should help with recent rate limiting issues (e.g., 3203 out of 3426 autobumped formulae were up to date in a recent run). This also reworks the output for duplicate PRs, making it clear when `bump` skipped checking PRs (as printing "none" would suggest that PRs were checked) and only printing the "Maybe duplicate" information when checked. This makes it a little easier to understand what `bump` has done internally from the output.
This commit is contained in:
parent
8d3056463d
commit
a89457fcb9
@ -48,5 +48,12 @@ module Homebrew
|
|||||||
def blank?
|
def blank?
|
||||||
@general.blank? && @arm.blank? && @intel.blank?
|
@general.blank? && @arm.blank? && @intel.blank?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
sig { params(other: T.untyped).returns(T::Boolean) }
|
||||||
|
def ==(other)
|
||||||
|
return false unless other.is_a?(BumpVersionParser)
|
||||||
|
|
||||||
|
(general == other.general) && (arm == other.arm) && (intel == other.intel)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -277,8 +277,9 @@ module Homebrew
|
|||||||
odebug "Error fetching pull requests for #{formula_or_cask} #{name}: #{e}"
|
odebug "Error fetching pull requests for #{formula_or_cask} #{name}: #{e}"
|
||||||
nil
|
nil
|
||||||
end
|
end
|
||||||
|
return if pull_requests.blank?
|
||||||
|
|
||||||
pull_requests&.map { |pr| "#{pr["title"]} (#{Formatter.url(pr["html_url"])})" }&.join(", ")
|
pull_requests.map { |pr| "#{pr["title"]} (#{Formatter.url(pr["html_url"])})" }.join(", ")
|
||||||
end
|
end
|
||||||
|
|
||||||
sig {
|
sig {
|
||||||
@ -373,13 +374,17 @@ module Homebrew
|
|||||||
new_version.general.to_s
|
new_version.general.to_s
|
||||||
end
|
end
|
||||||
|
|
||||||
duplicate_pull_requests = unless args.no_pull_requests?
|
if !args.no_pull_requests? && (new_version != current_version)
|
||||||
retrieve_pull_requests(formula_or_cask, name, version: pull_request_version)
|
duplicate_pull_requests = retrieve_pull_requests(
|
||||||
end.presence
|
formula_or_cask,
|
||||||
|
name,
|
||||||
|
version: pull_request_version,
|
||||||
|
)
|
||||||
|
|
||||||
maybe_duplicate_pull_requests = if !args.no_pull_requests? && duplicate_pull_requests.blank?
|
maybe_duplicate_pull_requests = if duplicate_pull_requests.nil?
|
||||||
retrieve_pull_requests(formula_or_cask, name)
|
retrieve_pull_requests(formula_or_cask, name)
|
||||||
end.presence
|
end
|
||||||
|
end
|
||||||
|
|
||||||
VersionBumpInfo.new(
|
VersionBumpInfo.new(
|
||||||
type:,
|
type:,
|
||||||
@ -411,9 +416,7 @@ module Homebrew
|
|||||||
repology_latest = version_info.repology_latest
|
repology_latest = version_info.repology_latest
|
||||||
|
|
||||||
# Check if all versions are equal
|
# Check if all versions are equal
|
||||||
versions_equal = [:arm, :intel, :general].all? do |key|
|
versions_equal = (new_version == current_version)
|
||||||
current_version.send(key) == new_version.send(key)
|
|
||||||
end
|
|
||||||
|
|
||||||
title_name = ambiguous_cask ? "#{name} (cask)" : name
|
title_name = ambiguous_cask ? "#{name} (cask)" : name
|
||||||
title = if (repology_latest == current_version.general || !repology_latest.is_a?(Version)) && versions_equal
|
title = if (repology_latest == current_version.general || !repology_latest.is_a?(Version)) && versions_equal
|
||||||
@ -439,8 +442,8 @@ module Homebrew
|
|||||||
end
|
end
|
||||||
|
|
||||||
version_label = version_info.version_name
|
version_label = version_info.version_name
|
||||||
duplicate_pull_requests = version_info.duplicate_pull_requests.presence
|
duplicate_pull_requests = version_info.duplicate_pull_requests
|
||||||
maybe_duplicate_pull_requests = version_info.maybe_duplicate_pull_requests.presence
|
maybe_duplicate_pull_requests = version_info.maybe_duplicate_pull_requests
|
||||||
|
|
||||||
ohai title
|
ohai title
|
||||||
puts <<~EOS
|
puts <<~EOS
|
||||||
@ -457,10 +460,22 @@ module Homebrew
|
|||||||
#{outdated_synced_formulae.join(", ")}.
|
#{outdated_synced_formulae.join(", ")}.
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
puts <<~EOS unless args.no_pull_requests?
|
if !args.no_pull_requests? && !versions_equal
|
||||||
Duplicate pull requests: #{duplicate_pull_requests || "none"}
|
if duplicate_pull_requests
|
||||||
Maybe duplicate pull requests: #{maybe_duplicate_pull_requests || "none"}
|
duplicate_pull_requests_text = duplicate_pull_requests
|
||||||
EOS
|
elsif maybe_duplicate_pull_requests
|
||||||
|
duplicate_pull_requests_text = "none"
|
||||||
|
maybe_duplicate_pull_requests_text = maybe_duplicate_pull_requests
|
||||||
|
else
|
||||||
|
duplicate_pull_requests_text = "none"
|
||||||
|
maybe_duplicate_pull_requests_text = "none"
|
||||||
|
end
|
||||||
|
|
||||||
|
puts "Duplicate pull requests: #{duplicate_pull_requests_text}"
|
||||||
|
if maybe_duplicate_pull_requests_text
|
||||||
|
puts "Maybe duplicate pull requests: #{maybe_duplicate_pull_requests_text}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
return unless args.open_pr?
|
return unless args.open_pr?
|
||||||
|
|
||||||
|
@ -69,4 +69,39 @@ RSpec.describe Homebrew::BumpVersionParser do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "#==" do
|
||||||
|
let(:new_version) { described_class.new(general: general_version, arm: arm_version, intel: intel_version) }
|
||||||
|
|
||||||
|
context "when other object is not a `BumpVersionParser`" do
|
||||||
|
it "returns false" do
|
||||||
|
expect(new_version == Version.new("1.2.3")).to be(false)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "when comparing objects with equal versions" do
|
||||||
|
it "returns true" do
|
||||||
|
same_version = described_class.new(general: general_version, arm: arm_version, intel: intel_version)
|
||||||
|
expect(new_version == same_version).to be(true)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "when comparing objects with different versions" do
|
||||||
|
it "returns false" do
|
||||||
|
different_general_version = described_class.new(general: "3.2.1", arm: arm_version, intel: intel_version)
|
||||||
|
different_arm_version = described_class.new(general: general_version, arm: "4.3.2", intel: intel_version)
|
||||||
|
different_intel_version = described_class.new(general: general_version, arm: arm_version, intel: "5.4.3")
|
||||||
|
different_general_arm_versions = described_class.new(general: "3.2.1", arm: "4.3.2", intel: intel_version)
|
||||||
|
different_arm_intel_versions = described_class.new(general: general_version, arm: "4.3.2", intel: "5.4.3")
|
||||||
|
different_general_intel_versions = described_class.new(general: "3.2.1", arm: arm_version, intel: "5.4.3")
|
||||||
|
|
||||||
|
expect(new_version == different_general_version).to be(false)
|
||||||
|
expect(new_version == different_arm_version).to be(false)
|
||||||
|
expect(new_version == different_intel_version).to be(false)
|
||||||
|
expect(new_version == different_general_arm_versions).to be(false)
|
||||||
|
expect(new_version == different_arm_intel_versions).to be(false)
|
||||||
|
expect(new_version == different_general_intel_versions).to be(false)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user