From 7d07d859ce10f5ea2c94033660674f3bf4ec0ece Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Fri, 31 Mar 2017 10:28:45 +0100 Subject: [PATCH] migrator: check if taps are from same user instead This avoids needing to use `force: true` and still let's Homebrew do what we want with our own taps. --- Library/Homebrew/cmd/update-report.rb | 7 +------ Library/Homebrew/migrator.rb | 17 ++++++++++------- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/Library/Homebrew/cmd/update-report.rb b/Library/Homebrew/cmd/update-report.rb index 0658907075..a6936c78cc 100644 --- a/Library/Homebrew/cmd/update-report.rb +++ b/Library/Homebrew/cmd/update-report.rb @@ -525,12 +525,7 @@ class Reporter next end - begin - migrator = Migrator.new(f, force: true) - migrator.migrate - rescue Exception => e - onoe e - end + Migrator.migrate_if_needed(f) end end diff --git a/Library/Homebrew/migrator.rb b/Library/Homebrew/migrator.rb index e745b85542..17f7ba4b48 100644 --- a/Library/Homebrew/migrator.rb +++ b/Library/Homebrew/migrator.rb @@ -95,7 +95,7 @@ class Migrator def self.migrate_if_needed(formula) return unless Migrator.needs_migration?(formula) begin - migrator = Migrator.new(formula, force: true) + migrator = Migrator.new(formula) migrator.migrate rescue Exception => e onoe e @@ -114,7 +114,7 @@ class Migrator @old_tabs = old_cellar.subdirs.map { |d| Tab.for_keg(Keg.new(d)) } @old_tap = old_tabs.first.tap - if !force && !from_same_taps? + if !force && !from_same_tap_user? raise MigratorDifferentTapsError.new(formula, old_tap) end @@ -140,15 +140,19 @@ class Migrator end end - def from_same_taps? + def from_same_tap_user? + formula_tap_user = formula.tap.user if formula.tap + old_tap_user = nil + new_tap = if old_tap + old_tap_user, = old_tap.user if migrate_tap = old_tap.tap_migrations[formula.oldname] - new_tap_user, new_tap_repo, = migrate_tap.split("/") + new_tap_user, new_tap_repo = migrate_tap.split("/") "#{new_tap_user}/#{new_tap_repo}" end end - if formula.tap == old_tap + if formula_tap_user == old_tap_user true # Homebrew didn't use to update tabs while performing tap-migrations, # so there can be INSTALL_RECEIPT's containing wrong information about tap, @@ -215,8 +219,7 @@ class Migrator end if conflicted - onoe "Remove #{new_cellar} manually and run brew migrate #{oldname}." - return + odie "Remove #{new_cellar} manually and run brew migrate #{oldname}." end end