From 08f31bc5731bda7c8d591b8d2caf2e5ae76b167d Mon Sep 17 00:00:00 2001 From: Max Howell Date: Wed, 15 Jun 2011 13:00:13 +0100 Subject: [PATCH] Fix first `brew update` with Git 1.7.4+; Fixes Homebrew/homebrew#5128 Behaviour for git checkout was changed such that the update would fail because it refused to checkout files on to existing files in the working directory. This was bad behaviour anyway, we should make efforts to keep any local modifications to the Homebrew checkout. Everything is neatly resolved if we just do a --soft reset. Closes Homebrew/homebrew#6017. --- Library/Homebrew/cmd/update.rb | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Library/Homebrew/cmd/update.rb b/Library/Homebrew/cmd/update.rb index 944e7304a9..f810acda0c 100644 --- a/Library/Homebrew/cmd/update.rb +++ b/Library/Homebrew/cmd/update.rb @@ -13,7 +13,6 @@ end class RefreshBrew REPOSITORY_URL = "http://github.com/mxcl/homebrew.git" - INIT_COMMAND = "git init" CHECKOUT_COMMAND = "git checkout -q master" UPDATE_COMMAND = "git pull #{REPOSITORY_URL} master" REVISION_COMMAND = "git rev-parse HEAD" @@ -40,7 +39,14 @@ class RefreshBrew safe_system CHECKOUT_COMMAND @initial_revision = read_revision else - safe_system INIT_COMMAND + begin + safe_system "git init" + safe_system "git fetch #{REPOSITORY_URL}" + safe_system "git reset FETCH_HEAD" + rescue Exception + safe_system "rm -rf .git" + raise + end end execute(UPDATE_COMMAND) @current_revision = read_revision