* Rewritten BuzHash inner loop as unsafe code to avoid bounds checks.
* Multiple paths can now be synced in a single command.
* Added stats for P4 output buffer being stalled, and throughput of replication service.
* Fixed OOB array access when serializing files with SHA1 hashes.
#preflight 62fc058ccf7afa018bb64459
[CL 21414959 by Ben Marsh in ue5-main branch]
* Removed debug code accidentally submitted (submitted from active change than shelf and ended up submitting these lines)
#rb Devin.Doucette
#preflight trivial
#ROBOMERGE-AUTHOR: henrik.karlsson
#ROBOMERGE-SOURCE: CL 21362243 via CL 21387021 via CL 21389408 via CL 21389788
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v975-21357124)
[CL 21392503 by henrik karlsson in ue5-main branch]
* Added support for ".ubtignore" files that can be put in a folder to make ubt ignore the folder and its subfolder
* Fixed bug where project's plugin and source folder were visited multiple times (look in FileMetadataPreftch.cs)
* Changed so Lazy<File/DirectoryItem> is resolved directly on windows platform and only do the extra refresh on mac/linux (there seems to be some bugs on those platforms and we don't want to pay extra cost on windows)
* Added runtimeconfig.template.json and changed UnrealBuildTool to use server gc and a few more settings that improve performance
* Added so all file traversing paths is aware of .uplugin
* Added debug code to be able to write out which files that have been touched during UBT execution. This can serve as a way to identify places to add .ubtignore files
#rb Joe.Kirchoff
#preflight 62f685f8cf7afa018ba0a4a5
#ROBOMERGE-AUTHOR: henrik.karlsson
#ROBOMERGE-SOURCE: CL 21360427 via CL 21371108 via CL 21371121 via CL 21371139
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v972-20964824)
[CL 21371637 by henrik karlsson in ue5-main branch]
* Add configurable size for bundle cache, and disable it by default.
* Sum up sizes of directories to sync without duplicating paths of every file.
* Use ByteArrayBuilder to create segments for bundles rather than concatenating to one large array.
#preflight none
[CL 21357732 by Ben Marsh in ue5-main branch]
* Sync state is periodically flushed, and stored with an optimized list of paths to conform a workspace back to the same state.
* Writes are automatically queued to run asynchrnously once a bundle of data is ready to be stored, rather than clients having to trigger a write.
* BundleStore supports different contexts for different reads, to prevent hashed blobs being merged together when reading from different sources.
#rb none
#preflight none
[CL 21293876 by Ben Marsh in ue5-main branch]
Only expose ConnectionPool from RedisService to avoid using Database or ConnectionMultiplexer directly.
#preflight 62f2661d3b773d041627aad0
[CL 21286130 by carl bystrom in ue5-main branch]