Merge pull request #14141 from apainintheneck/speed-up-deleted-reason

Speed up `deleted_reason` method
This commit is contained in:
Mike McQuaid 2022-11-18 09:18:37 +00:00 committed by GitHub
commit 984d9d712d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 32 additions and 6 deletions

View File

@ -154,6 +154,20 @@ module Homebrew
end
end
# Optimization for the core tap which has many monthly commits
if tap.core_tap?
# Check if the formula has been deleted in the last month.
diff_command = ["git", "diff", "--diff-filter=D", "--name-only",
"@{'1 month ago'}", "--", relative_path]
deleted_formula = Utils.popen_read(*diff_command)
if deleted_formula.blank?
ofail "No previously deleted formula found." unless silent
return
end
end
# Find commit where formula was deleted in the last month.
log_command = "git log --since='1 month ago' --diff-filter=D " \
"--name-only --max-count=1 " \
"--format=%H\\\\n%h\\\\n%B -- #{relative_path}"

View File

@ -75,16 +75,28 @@ describe Homebrew::MissingFormula do
end
end
context "with a deleted formula" do
let(:formula) { "homebrew/foo/deleted-formula" }
shared_examples "it detects deleted formulae" do
context "with a deleted formula" do
let(:formula) { "homebrew/foo/deleted-formula" }
it { is_expected.not_to be_nil }
it { is_expected.not_to be_nil }
end
context "with a formula that never existed" do
let(:formula) { "homebrew/foo/missing-formula" }
it { is_expected.to be_nil }
end
end
context "with a formula that never existed" do
let(:formula) { "homebrew/foo/missing-formula" }
include_examples "it detects deleted formulae"
it { is_expected.to be_nil }
describe "on the core tap" do
before do
allow_any_instance_of(Tap).to receive(:core_tap?).and_return(true)
end
include_examples "it detects deleted formulae"
end
end