aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
authorilovezfs2017-03-23 07:56:58 -0700
committerGitHub2017-03-23 07:56:58 -0700
commit54abadb202fcb1f0cd7df057809e841e1930d94c (patch)
treed827631a6c4d2c464b4cd9554adc04002541ee65 /Library
parentd1be51d2cd889a5c337cdbf153a083b22d0b940a (diff)
parent845d083464e993fdbc58c96a528f510cdda1a9fa (diff)
downloadbrew-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.rb30
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)