aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXu Cheng2015-06-13 01:57:00 +0800
committerXu Cheng2015-06-14 21:28:36 +0800
commit4101cef3c5e167daee6a6189e34546619c510dd3 (patch)
treedcdb048f7fac8c88a8b2605168ba8e6d66841256
parentb88cb13718357c26a10fa1ac68d630225c7791fb (diff)
downloadbrew-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.rb2
-rw-r--r--Library/Homebrew/cmd/tap.rb5
-rw-r--r--Library/Homebrew/tap.rb23
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?,