unpack_strategy/directory: use mv for nested unpack #18518
+52
−26
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
brew style
with your changes locally?brew typecheck
with your changes locally?brew tests
with your changes locally?mv
should preserve hardlinks and allow faster unpack on the same filesystem. A secondary pass is done withcp
to copy over attributes onto any existing directories.We only run this for nested unpacks as most direct Directory strategy usage is for repositories where moving files breaks existing code.
There are also potential user issues that could be due to Apple's
cp -l
on specific macOS versions. Can consider re-addingcp -l
with improved fallback handling if there is noticeable advantages.This improves performance when pouring bottles if user has brew installed on same filesystem as
/tmp
directory (~1.2-1.4x when tested viabrew reinstall
which means directbrew install
).macOS
mv
man page says:Which should essentially be similar to
cp -pR
when combined with other logic.