From 8ffc77d8e89ebb1e4895b1d4927f713f182cac66 Mon Sep 17 00:00:00 2001 From: Markus Reiter Date: Sat, 3 Jun 2017 00:23:06 +0200 Subject: [PATCH] Refactor `formula_at_revision`. --- Library/Homebrew/formula_versions.rb | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/Library/Homebrew/formula_versions.rb b/Library/Homebrew/formula_versions.rb index dda8dc7126..bb68035679 100644 --- a/Library/Homebrew/formula_versions.rb +++ b/Library/Homebrew/formula_versions.rb @@ -17,6 +17,7 @@ class FormulaVersions @repository = formula.tap.path @entry_name = @path.relative_path_from(repository).to_s @current_formula = formula + @formula_at_revision = {} end def rev_list(branch) @@ -32,20 +33,20 @@ class FormulaVersions end def formula_at_revision(rev) - contents = file_contents_at_revision(rev) + Homebrew.raise_deprecation_exceptions = true - begin - Homebrew.raise_deprecation_exceptions = true - yield nostdout { Formulary.from_contents(name, path, contents) } - rescue *IGNORED_EXCEPTIONS => e - # We rescue these so that we can skip bad versions and - # continue walking the history - ohai "#{e} in #{name} at revision #{rev}", e.backtrace if ARGV.debug? - rescue FormulaUnavailableError - # Suppress this error - ensure - Homebrew.raise_deprecation_exceptions = false + yield @formula_at_revision[rev] ||= begin + contents = file_contents_at_revision(rev) + nostdout { Formulary.from_contents(name, path, contents) } end + rescue *IGNORED_EXCEPTIONS => e + # We rescue these so that we can skip bad versions and + # continue walking the history + ohai "#{e} in #{name} at revision #{rev}", e.backtrace if ARGV.debug? + rescue FormulaUnavailableError + # Suppress this error + ensure + Homebrew.raise_deprecation_exceptions = false end def bottle_version_map(branch)