Feature: Robocopy Multithreaded support - #18742
Conversation
… correctly, remove batching setting for auto batch size calculation, add logging.
This comment was marked as resolved.
This comment was marked as resolved.
|
Your beach is quite old to build, could you rebase it with main. |
|
@Josh65-2201 its updated, seems to be working the same with a basic test |
|
What is considered large for testing, the amount of files or size? Below is what i can think of should be tested, if you have anything else please let me know Delete: Local |
|
Hi Josh, the number of files are considered as large for testing because bigger files have consistent speeds of transfers, and this PR has 0 advantage on few file transfers. This would shine if you try transferring something like python venv, node_modules folder of nodejs apps, etc. on a very bloated developer project, for example. |
| </wctcontrols:SettingsExpander.HeaderIcon> | ||
| <ToggleSwitch AutomationProperties.Name="{helpers:ResourceString Name=UseRobocopyForFileOperations}" IsOn="{x:Bind ViewModel.UseRobocopyForFileOperations, Mode=TwoWay}" /> | ||
| <wctcontrols:SettingsExpander.ItemsHeader> | ||
| <Grid |
There was a problem hiding this comment.
Please use a SettingsCard for this. See the cache thumbnails setting for reference.
This PR implements support for Robocopy multithreading in file operations. It should be able to robustly handle a variety of situations, such as copy‑pasting, moving, and file deletion as well. During testing for large numbers of small files, this can increase transfer rate by up to ten times. In general, this has been a requested feature for a while and will increase parity with the Windows File Explorer.
This is my first pr so sorry if I messed anything up!
Basic code changes
IDevToolsSettingsService.csUseRobocopyForFileOperationsandRobocopyThreadsDevToolsSettingsService.csDevToolsViewModel.csDevToolsPage.xamlNumberBoxResources.reswShellFilesystemOperations.csFileOperationsHelpers.cs/MIRrobocopy.exewith/MT, verifies results, and supports cancellation through aCancellationTokenSourceFilesystemHelpers.csIWindowsJumpListService.csRemoveFoldersAsyncWindowsJumpListService.csRemoveFolderAsyncdelegates to the batch methodStatusCenterItem.csCopyEngineResult.csCOPYENGINE_E_USER_CANCELLEDtoGenericResolved / Related Issues
To prevent extra work, all changes to the Files codebase must link to an approved issue marked as
Ready to build. Please insert the issue number following the hashtag with the issue number that this Pull Request resolves.Steps used to test these changes
Stability is a top priority for Files and all changes are required to go through testing before being merged into the repo. Please include a list of steps that you used to test this PR.
Required testing: