Using the wildcard support for p4 print we can print the entire contents of a shelf with one call instead of a call for each file.
Splitting TryPrint*Async into a method that assumes one file in and one result out, and another method that can return multiple results.
#rnx
#jira none
#rb ben.marsh
#preflight n/a
[CL 21706680 by Ryan Hummer in ue5-main branch]
IPerforceConnection now contains a CreateRecord method to create a PerforceRecord, which adds numbered fields for lists in the legacy client, and unnumbered fields for the native client.
#preflight none
[CL 20568223 by Ben Marsh in ue5-main branch]
- Now uses the custom C++ Perforce library developed for Horde. This removes dependencies on an installed P4.EXE tool, improves performance, and paves the way to cross-platform support via command line invocations.
- As part of the migration to the new Perforce library, the codebase now uses async/await extensively instead of background threads, and supports a proper cancellation path rather than aborting threads.
- ILogger is now used for writing log files.
- Started converting to use of nullable annotations.
#preflight none
[CL 18511154 by Ben Marsh in ue5-main branch]
- Removed functionality to set environment variables through the IPerforceConnection object. This is now handled via PerforceEnvironment.
- Added support for logging in using the native Perforce connection implementation.
- Started migrating methods that return a list of responses to return an IAsyncEnumerable instead. This makes it much easier to perform stream processing on requests that return a lot of data.
- Added the "p4 depot" command.
- Added the "p4 have" command.
- Added the "p4 opened" command.
- Added the "p4 stream" command.
- Added the "p4 users" command.
- Added support for printing files to a temporary file, and for p4 print commands returning metadata along with the payload in its response.
- Fixed stream corruption using native Perforce library if a record did not completely fit within the output buffer.
#preflight none
[CL 18504069 by Ben Marsh in ue5-main branch]
- PerforceEnvironment class now allows querying the state of Perforce environment variables in a client agnostic way. (Supports system environment variables on Mac/Linux, and registry on Win32. Also reads settings from any P4ENVIRO file, and P4CONFIG files when initialized with a directory.)
- Connection settings are now stored in a PerforceSettings object, with a read-only IPerforceSettings interface. Both clients can be initialized through the same parameter block.
- A connection can be created using the PerforceConnection.CreateAsync() method. Specifying the IPerforceSettings.PreferNativeClient will create a NativePerforceConnection implementation where possible.
[CL 18464429 by Ben Marsh in ue5-main branch]
Data tools:
* Convert data to local writable -> Convert All data in changelist or all selected data files to local writable
Unshelving tools:
* Unshelve to current revision -> Remembers revision all files you are about to unshelve and if the revision is older, will sync to saved revision
* Unshelve and make data writable -> Unshelve changelist but for data will make them writable locally
#jira none
#review-17681604
#rb Andy.Firth Brandon.Dawson
#preflight skip
#robomerge 5.0
#robomerge FnMain
[CL 18039467 by Maxime Mercier in ue5-main branch]