diff --git a/Library/Homebrew/update.rb b/Library/Homebrew/update.rb index 09399fbde317e941fe56febcbf11d29e8213cd7f..f500fdd8e1a2b4bf300a8301f740a4f9a5287cbd 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 ed7a5124eda530bbe34b93321aed9455dc48df3f..3bb11b385c648a56c3808ead7c158d106f0f08be 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}"}