diff --git a/Library/Homebrew/cmd/update.rb b/Library/Homebrew/cmd/update.rb
index e3e25c01eb745f1c6204568b749be029aa49c40b..594d2da9598836fd3975066efdcff73337a1a2ba 100644
--- a/Library/Homebrew/cmd/update.rb
+++ b/Library/Homebrew/cmd/update.rb
@@ -84,10 +84,15 @@ class Updater
     map = Hash.new{ |h,k| h[k] = [] }
 
     if initial_revision && initial_revision != current_revision
-      changes = `git diff-tree -r --name-status -z #{initial_revision} #{current_revision}`.split("\0")
-      changes.each_slice(2) do |status, file|
-        file = Pathname.pwd.join(file).relative_path_from(HOMEBREW_REPOSITORY)
-        map[status.to_sym] << file.to_s
+      changes = `git diff-tree -r --name-status -M85% -z #{initial_revision} #{current_revision}`.split("\0")
+      changes.each_cons(3) do |status, src, dst|
+        next unless status =~ /^[AMDR](\d{3})?$/
+        path = case status = status[0,1]
+          when 'R' then dst
+          else src
+          end
+        path = Pathname.pwd.join(path).relative_path_from(HOMEBREW_REPOSITORY)
+        map[status.to_sym] << path.to_s
       end
     end