aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/cmd/update.rb
diff options
context:
space:
mode:
Diffstat (limited to 'Library/Homebrew/cmd/update.rb')
-rw-r--r--Library/Homebrew/cmd/update.rb13
1 files changed, 9 insertions, 4 deletions
diff --git a/Library/Homebrew/cmd/update.rb b/Library/Homebrew/cmd/update.rb
index e3e25c01e..594d2da95 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