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 <mistydemeo@gmail.com> Suggested-by: Jack Nagel <jacknagel@gmail.com> Signed-off-by: Jiang Xin <worldhello.net@gmail.com> Signed-off-by: Jack Nagel <jacknagel@gmail.com>
This commit is contained in:
parent
79c745cc76
commit
f30200890e
@ -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
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user