Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
merged branch jakzal/FilesystemMirrorCleanup (PR #3844)
Commits ------- efad5d5 [Filesystem] Prevented infiite loop on windows while calling mirror on symlink. Added test for mirroring symlinks. Discussion ---------- [Filesystem] Prevented infinite loop on windows while mirrorring symlinks First check for filetype in *mirror()* method is: if (is_link($file)) { $this->symlink($file, $target); later we see: } elseif (is_file($file) || ($copyOnWindows && is_link($file))) { $this->copy($file, $target, isset($options['override']) ? $options['override'] : false); The later check for links on windows (*$copyOnWindows && is_link($file)*) won't ever get called. Calling *symlink()* in *mirror()* on windows would lead to calling *mirror()* again. Note that I didn't actually try running it on windows platform. I added a test for mirroring symlinks (non-windows test). I think it'd be good if someone added some windows specific tests to this class. I also modified the target path: $target = $targetDir.'/'.str_replace($originDir.DIRECTORY_SEPARATOR, '', $file->getPathname()); It didn't use DIRECTORY_SEPARATOR and is equivalent to: $target = str_replace($originDir, $targetDir, $file->getPathname()); Bug fix: yes Feature addition: no Backwards compatibility break: no Symfony2 tests pass: yes Fixes the following tickets: ~ Todo: ~
- Loading branch information