From 4254661c66a3567cb098f9f92ec1bc1d301c1503 Mon Sep 17 00:00:00 2001 From: Max Howell <max@methylblue.com> Date: Thu, 12 Nov 2009 03:55:09 +0000 Subject: [PATCH] Brew update will git init if required This is necessary for those who installed Homebrew using the suggested tarball method. Too late for them though. --- Library/Homebrew/update.rb | 32 +++++++++++++++++--------------- bin/brew | 6 +++++- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/Library/Homebrew/update.rb b/Library/Homebrew/update.rb index 09399fbde3..f500fdd8e1 100644 --- a/Library/Homebrew/update.rb +++ b/Library/Homebrew/update.rb @@ -22,10 +22,11 @@ # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # class RefreshBrew - CHECKOUT_COMMAND = 'git checkout master' - UPDATE_COMMAND = 'git pull origin master' - REVISION_COMMAND = 'git log -l -1 --pretty=format:%H' - GIT_UP_TO_DATE = 'Already up-to-date.' + RESPOSITORY_URL = 'git://github.com/mxcl/homebrew.git' + CHECKOUT_COMMAND = 'git checkout -q master' + UPDATE_COMMAND = "git pull #{RESPOSITORY_URL} master" + REVISION_COMMAND = 'git log -l -1 --pretty=format:%H 2> /dev/null' + GIT_UP_TO_DATE = 'Already up-to-date' formula_regexp = 'Library/Formula/(.+?)\.rb' ADDED_FORMULA = %r{^\s+create mode \d+ #{formula_regexp}$} @@ -40,9 +41,16 @@ class RefreshBrew # Performs an update of the homebrew source. Returns +true+ if a newer # version was available, +false+ if already up-to-date. def update_from_masterbrew! - git_checkout_masterbrew! - output = git_pull! - + output = '' + in_prefix do + if File.directory? '.git' + safe_system CHECKOUT_COMMAND + else + safe_system "git init" + end + output = execute(UPDATE_COMMAND) + end + output.split("\n").reverse.each do |line| case line when ADDED_FORMULA @@ -63,6 +71,8 @@ class RefreshBrew def current_revision in_prefix { execute(REVISION_COMMAND).strip } + rescue + 'TAIL' end private @@ -80,12 +90,4 @@ class RefreshBrew ohai(cmd, out) if ARGV.verbose? out end - - def git_checkout_masterbrew! - in_prefix { execute CHECKOUT_COMMAND } - end - - def git_pull! - in_prefix { execute UPDATE_COMMAND } - end end diff --git a/bin/brew b/bin/brew index ed7a5124ed..3bb11b385c 100755 --- a/bin/brew +++ b/bin/brew @@ -132,7 +132,8 @@ begin exec_editor *paths end - when 'up', 'update' + when 'up', 'update' + if system "/usr/bin/which -s git" require 'update' updater = RefreshBrew.new old_revision = updater.current_revision @@ -147,6 +148,9 @@ begin puts "No formulae were updated." unless updater.pending_formulae_changes? end end + else + abort "Please `brew install git' first." + end when 'ln', 'link' ARGV.kegs.each {|keg| puts "#{keg.link} links created for #{keg}"} -- GitLab