Improve performances of "move" operations by calling status with --controlledchanged instead of --all #69
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.
Improve performance of many operations, mainly the Copy/Move file across folders
Optimize RunUpdateStatus() with a new parameter bInControlledOnly to call "status" with the flag "--controlledchanged" instead of "--all" when doing a quick check following a source control operation,
as opposed to the specific case of the "Update Status" operation called by the Editor to update the status of files in the content browser.
Rational: When checking the status of files after a source control operation, we mostly only care of controlled status (Controlled, CheckedOut, Added, Moved, Deleted)
Initial attempt / workaround bellow;
Improve performances of "move" by not grouping the final "status" on both source & destination files if they are not on the same folder.
Reasoning: the final "status" call on the common directory of both files could very well operate on the root Content/ folder itself, leading to an expensive call checking status of the whole project
As there is no perfect heuristic to know when a directory status is more expensive that two file status, let's assume that a "rename" (ie. source & destination in the same directory) is always worth grouping, while a "move" (different directories) is more at risk to create a huge status update.
This has the potential to help a lot on big game project, where a call to a "full Content/ status" can take seconds (so moving 100 assets might take 1000s less). The downside is that it will slow down the status on small project where it only takes around 100ms (where moving 100 assets might take 10s more).