diff options
| author | ilovezfs | 2017-03-23 07:56:58 -0700 |
|---|---|---|
| committer | GitHub | 2017-03-23 07:56:58 -0700 |
| commit | 54abadb202fcb1f0cd7df057809e841e1930d94c (patch) | |
| tree | d827631a6c4d2c464b4cd9554adc04002541ee65 /Library | |
| parent | d1be51d2cd889a5c337cdbf153a083b22d0b940a (diff) | |
| parent | 845d083464e993fdbc58c96a528f510cdda1a9fa (diff) | |
| download | brew-54abadb202fcb1f0cd7df057809e841e1930d94c.tar.bz2 | |
Merge pull request #2359 from ilovezfs/migrator-allow-new-cellar-to-exist-already
migrator: allow new cellar to exist already
Diffstat (limited to 'Library')
| -rw-r--r-- | Library/Homebrew/migrator.rb | 30 |
1 files changed, 26 insertions, 4 deletions
diff --git a/Library/Homebrew/migrator.rb b/Library/Homebrew/migrator.rb index a80cf0c59..3eb7f833e 100644 --- a/Library/Homebrew/migrator.rb +++ b/Library/Homebrew/migrator.rb @@ -147,15 +147,25 @@ class Migrator end def migrate - if new_cellar.exist? - onoe "#{new_cellar} already exists; remove it manually and run brew migrate #{oldname}." - return + if old_cellar.exist? && new_cellar.exist? + conflicted = false + old_cellar.each_child do |c| + if (new_cellar/c.basename).exist? + conflicted = true + onoe "#{new_cellar/c.basename} already exists." + end + end + if conflicted + onoe "Remove #{new_cellar} manually and run brew migrate #{oldname}." + return + end end begin oh1 "Migrating #{Formatter.identifier(oldname)} to #{Formatter.identifier(newname)}" lock unlink_oldname + unlink_newname if new_cellar.exist? move_to_new_directory repin link_oldname_cellar @@ -178,7 +188,11 @@ class Migrator # move everything from Cellar/oldname to Cellar/newname def move_to_new_directory puts "Moving to: #{new_cellar}" - FileUtils.mv(old_cellar, new_cellar) + if new_cellar.exist? + FileUtils.mv(old_cellar.children, new_cellar) + else + FileUtils.mv(old_cellar, new_cellar) + end end def repin @@ -207,6 +221,14 @@ class Migrator end end + def unlink_newname + oh1 "Unlinking #{Formatter.identifier(newname)}" + new_cellar.subdirs.each do |d| + keg = Keg.new(d) + keg.unlink + end + end + def link_newname oh1 "Linking #{Formatter.identifier(newname)}" new_keg = Keg.new(new_linked_keg_record) |
