diff options
| author | Xu Cheng | 2015-06-13 01:57:00 +0800 |
|---|---|---|
| committer | Xu Cheng | 2015-06-14 21:28:36 +0800 |
| commit | 4101cef3c5e167daee6a6189e34546619c510dd3 (patch) | |
| tree | dcdb048f7fac8c88a8b2605168ba8e6d66841256 | |
| parent | b88cb13718357c26a10fa1ac68d630225c7791fb (diff) | |
| download | brew-4101cef3c5e167daee6a6189e34546619c510dd3.tar.bz2 | |
Tap: make remote a separate method to reduce initial overhead
Also make remote method only response to installed tap.
| -rw-r--r-- | Library/Homebrew/cmd/tap-info.rb | 2 | ||||
| -rw-r--r-- | Library/Homebrew/cmd/tap.rb | 5 | ||||
| -rw-r--r-- | Library/Homebrew/tap.rb | 23 |
3 files changed, 19 insertions, 11 deletions
diff --git a/Library/Homebrew/cmd/tap-info.rb b/Library/Homebrew/cmd/tap-info.rb index e05b9eb08..cd3f82109 100644 --- a/Library/Homebrew/cmd/tap-info.rb +++ b/Library/Homebrew/cmd/tap-info.rb @@ -48,7 +48,7 @@ module Homebrew info += "Not installed" end puts info - puts "From: #{tap.remote}" + puts "From: #{tap.remote.nil? ? "N/A" : tap.remote}" end end end diff --git a/Library/Homebrew/cmd/tap.rb b/Library/Homebrew/cmd/tap.rb index 3a0a1156b..43e47711e 100644 --- a/Library/Homebrew/cmd/tap.rb +++ b/Library/Homebrew/cmd/tap.rb @@ -14,10 +14,11 @@ module Homebrew end def install_tap user, repo, clone_target=nil - tap = Tap.new user, repo, clone_target + tap = Tap.new user, repo return false if tap.installed? ohai "Tapping #{tap}" - args = %W[clone #{tap.remote} #{tap.path}] + remote = clone_target || "https://github.com/#{tap.user}/homebrew-#{tap.repo}" + args = %W[clone #{remote} #{tap.path}] args << "--depth=1" unless ARGV.include?("--full") safe_system "git", *args diff --git a/Library/Homebrew/tap.rb b/Library/Homebrew/tap.rb index 92f02fc06..f8200dac2 100644 --- a/Library/Homebrew/tap.rb +++ b/Library/Homebrew/tap.rb @@ -7,20 +7,26 @@ class Tap attr_reader :repo attr_reader :name attr_reader :path - attr_reader :remote - def initialize(user, repo, remote=nil) + def initialize(user, repo) # we special case homebrew so users don't have to shift in a terminal @user = user == "homebrew" ? "Homebrew" : user @repo = repo @name = "#{@user}/#{@repo}".downcase @path = TAP_DIRECTORY/"#{@user}/homebrew-#{@repo}".downcase - if installed? - @path.cd do - @remote = Utils.popen_read("git", "config", "--get", "remote.origin.url").chomp + end + + def remote + @remote ||= if installed? + if (@path/".git").exist? + @path.cd do + Utils.popen_read("git", "config", "--get", "remote.origin.url").chomp + end + else + nil end else - @remote = remote || "https://github.com/#{@user}/homebrew-#{@repo}" + raise TapUnavailableError, name end end @@ -46,7 +52,8 @@ class Tap end def custom_remote? - @remote.casecmp("https://github.com/#{@user}/homebrew-#{@repo}") != 0 + return true unless remote + remote.casecmp("https://github.com/#{@user}/homebrew-#{@repo}") != 0 end def formula_files @@ -69,7 +76,7 @@ class Tap "user" => @user, "repo" => @repo, "path" => @path.to_s, - "remote" => @remote, + "remote" => remote, "installed" => installed?, "official" => official?, "custom_remote" => custom_remote?, |
