From f30200890e31dd846cdc3015ac8e531e642b04eb Mon Sep 17 00:00:00 2001 From: Jiang Xin Date: Tue, 9 Apr 2013 11:01:58 +0800 Subject: [PATCH] versions: work for tapped formulae brew versions is hardcoded to cd to HOMEBREW_REPOSITORY before running git, and as such fails to report previous versions for any formulae from a tapped repository. Add two new private methods repository and entry_name to replace the hardcoded HOMEBREW_REPOSITORY and formula path, and brew versions work for both builtin and tapped formulae. Closes Homebrew/homebrew#12356. Closes Homebrew/homebrew#19069. Reported-by: Misty De Meo Suggested-by: Jack Nagel Signed-off-by: Jiang Xin Signed-off-by: Jack Nagel --- Library/Homebrew/cmd/versions.rb | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/Library/Homebrew/cmd/versions.rb b/Library/Homebrew/cmd/versions.rb index f6aaea77c4..205f4467e9 100644 --- a/Library/Homebrew/cmd/versions.rb +++ b/Library/Homebrew/cmd/versions.rb @@ -37,23 +37,39 @@ class Formula end def pretty_relative_path - if Pathname.pwd == HOMEBREW_REPOSITORY - "Library/Formula/#{name}.rb" + if Pathname.pwd == repository + entry_name else - "#{HOMEBREW_REPOSITORY}/Library/Formula/#{name}.rb" + repository/"#{entry_name}" end end private + def repository + @repository ||= begin + if path.realpath.to_s =~ %r{#{HOMEBREW_REPOSITORY}/Library/Taps/(\w+)-(\w+)} + HOMEBREW_REPOSITORY/"Library/Taps/#$1-#$2" + else + HOMEBREW_REPOSITORY + end + end + end + + def entry_name + @entry_name ||= begin + repository == HOMEBREW_REPOSITORY ? "Library/Formula/#{name}.rb" : "#{name}.rb" + end + end + def rev_list - HOMEBREW_REPOSITORY.cd do - `git rev-list --abbrev-commit HEAD -- Library/Formula/#{name}.rb`.split + repository.cd do + `git rev-list --abbrev-commit HEAD -- #{entry_name}`.split end end def text_from_sha sha - HOMEBREW_REPOSITORY.cd do - `git cat-file blob #{sha}:Library/Formula/#{name}.rb` + repository.cd do + `git cat-file blob #{sha}:#{entry_name}` end end