aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Library/Homebrew/cmd/versions.rb20
1 files changed, 8 insertions, 12 deletions
diff --git a/Library/Homebrew/cmd/versions.rb b/Library/Homebrew/cmd/versions.rb
index 55703c811..101addb04 100644
--- a/Library/Homebrew/cmd/versions.rb
+++ b/Library/Homebrew/cmd/versions.rb
@@ -63,21 +63,17 @@ class Formula
path = Pathname.new(Pathname.pwd+"#{name}.rb")
path.write text_from_sha(sha)
- # Determine the version by loading the old class file.
- # Note that this means that the command will error out after it
- # encounters a formula that won't import. This doesn't matter
- # for most formulae, but e.g. Bash at revision aae084c9db has a
- # syntax error and so `versions` isn't able to walk very far back
- # through the history.
-
- # Unload the class so Formula#version returns the correct value.
+ # Unload the class so Formula#version returns the correct value
# FIXME shouldn't have to do this?
- Object.send(:remove_const, Formula.class_s(name))
begin
- nostdout { Formula.factory(path).version }
- rescue SyntaxError
+ version = nostdout { Formula.factory(path).version }
+ Object.send(:remove_const, Formula.class_s(name))
+ version
+ rescue SyntaxError, TypeError
+ # We rescue these so that we can skip bad versions and
+ # continue walking the history
nil
end
- end rescue nil
+ end
end
end