Don't use :remove_destination option to FileUtils.cp_r
#12165
Merged
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.
The docs for
FileUtils.cp_r
state:This isn't the behavior like
rsync --delete
provides, where it removes extraneous files. Instead, it seems like this feature was added to Ruby to deal with cases where the file being copied over is potentially actively in use during the copy operation. Instead of overwriting the file, it'll unlink the file first here, which allows open file handles to continue accessing the old file contents.In any case, the solution is to go back to the previous behavior of doing an
rm_rf
before thecp_r
. Alternatively, we could usersync --delete
here as well, like we did here, but I'd rather minimize the churn.Without this, the behavior that we were seeing is that we'd end up with an pod install output like:
And we'd end up with the new pods content installed into
Pods/PodFramework/1.2.3-134c1
instead of into the root directory. By removing thePodFramework
destination directory before the call tocp_r
, we will restore the previous expected behavior.