Commit Graph

50 Commits

Author SHA1 Message Date
ben marsh
049e63c048 Fix buffer corruption when enumerating Perforce records.
#ROBOMERGE-SOURCE: CL 17394417 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v865-17346139)

[CL 17394425 by ben marsh in ue5-release-engine-test branch]
2021-09-01 19:25:39 -04:00
ben marsh
136191be1b Cap the maximum output from P4 error messages.
#ROBOMERGE-SOURCE: CL 17393747 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v865-17346139)

[CL 17393755 by ben marsh in ue5-release-engine-test branch]
2021-09-01 18:33:09 -04:00
ben marsh
2f3c95f95c Fix Perforce hexdump output not being capped.
#ROBOMERGE-SOURCE: CL 17392463 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v865-17346139)

[CL 17392498 by ben marsh in ue5-release-engine-test branch]
2021-09-01 16:57:26 -04:00
ryan hummer
e4f4d227f7 Fixing Perforce Fetching user info failing.
user command must have a space after the -o before the user name, restore the space and quoting the user name

#jira none

#ROBOMERGE-SOURCE: CL 17389981 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v865-17346139)

[CL 17389988 by ryan hummer in ue5-release-engine-test branch]
2021-09-01 13:57:49 -04:00
ben marsh
708857c620 EpicGames.Perforce: Fix infinite loop in CommandAsync().
#ROBOMERGE-SOURCE: CL 17386458 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v865-17346139)

[CL 17386464 by ben marsh in ue5-release-engine-test branch]
2021-09-01 10:32:20 -04:00
ben marsh
32fb18f53f EpicGames.Perforce Fix argument for -x when using child process. Delegate to the connection implementation to write arguments to a response file.
#ROBOMERGE-SOURCE: CL 17386176 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v865-17346139)

[CL 17386190 by ben marsh in ue5-release-engine-test branch]
2021-09-01 10:07:26 -04:00
ben marsh
6803a5297f EpicGames.Perforce: Completely fill read buffer before returning to the caller. Linux returns 64k chunks of data and requires multiple calls to fill the buffer. In situations where we want to parse very large records (such as large p4 describe results), this results in attempting to parse the buffer many times more than necessary in order to succeed.
#ROBOMERGE-SOURCE: CL 17385591 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v865-17346139)

[CL 17385602 by ben marsh in ue5-release-engine-test branch]
2021-09-01 09:06:01 -04:00
ben marsh
10108b8fa9 More debug output for corrupt Perforce response data.
#ROBOMERGE-SOURCE: CL 17381660 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v865-17346139)

[CL 17381663 by ben marsh in ue5-release-engine-test branch]
2021-08-31 22:36:28 -04:00
ben marsh
60def4f3eb Additional data for malformed Perforce response data.
#ROBOMERGE-SOURCE: CL 17380942 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v865-17346139)

[CL 17380955 by ben marsh in ue5-release-engine-test branch]
2021-08-31 21:32:12 -04:00
ben marsh
4cc8da9a5a Double the size of the P4 response buffer until a limit, then increase it by 32MB chunks. Also improve error reporting for corrupt buffers.
#ROBOMERGE-SOURCE: CL 17380649 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v865-17346139)

[CL 17380675 by ben marsh in ue5-release-engine-test branch]
2021-08-31 20:49:50 -04:00
ben marsh
e0e1133fb1 GitSync: Fix stack overflow when disposing of child process objects.
#ROBOMERGE-SOURCE: CL 17377613 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v865-17346139)

[CL 17377646 by ben marsh in ue5-release-engine-test branch]
2021-08-31 17:00:38 -04:00
ben marsh
421a2983ee Ignore missing EpicGames.Perforce.Native.pdb if it does not exist. Fix CIS in Dev-EngineMerge.
#ROBOMERGE-SOURCE: CL 17348211 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v865-17346139)

[CL 17348217 by ben marsh in ue5-release-engine-test branch]
2021-08-29 20:34:21 -04:00
ben marsh
6b97579ea7 Add a native implementation of IPerforceConnection, which uses the Perforce C++ API (via a DLL called EpicGames.Perforce.Native) to output records to a buffer shared with managed code (which is double-buffered with the processing thread in managed code). Interaction with the API is lightweight and done on a background thread, with an async API overlaid on top. Prebuilt binaries for the native component are currently tested on Windows and Linux.
Performance has been tested against the P4 .NET API and the command line client by performing a fstat of non-deleted files in //UE5/Main.

EpicGames.Perforce (this library): 47s
Command line client piping to file: 59s
P4 .NET API: ~40 minutes

#ROBOMERGE-SOURCE: CL 17347502 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v865-17346139)

[CL 17347506 by ben marsh in ue5-release-engine-test branch]
2021-08-29 16:36:22 -04:00
ben marsh
d512bc6012 P4: Add an interface for Perforce responses, and move the record deserialization logic into extension methods on it.
#ROBOMERGE-SOURCE: CL 17335637 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v861-17282326)

[CL 17335640 by ben marsh in ue5-release-engine-test branch]
2021-08-27 12:20:21 -04:00
ben marsh
e513c69e1b Quality of life improvements for EpicGames.Perforce.
* Introduce a new FileSpecList class which supports implicit conversion from a single string and arrays/lists of strings.
* Make the cancellation token argument to all commands optional.

#ROBOMERGE-SOURCE: CL 17335316 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v861-17282326)

[CL 17335317 by ben marsh in ue5-release-engine-test branch]
2021-08-27 11:44:13 -04:00
ben marsh
8055fb91df P4: Specify command arguments as a list rather than a concatenated string, for future compatibility with C++ library.
#ROBOMERGE-SOURCE: CL 17335163 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v861-17282326)

[CL 17335167 by ben marsh in ue5-release-engine-test branch]
2021-08-27 11:22:45 -04:00
ben marsh
eb26cec399 Introduce an interface for Perforce connections in C#.
#ROBOMERGE-SOURCE: CL 17334845 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v861-17282326)

[CL 17334856 by ben marsh in ue5-release-engine-test branch]
2021-08-27 10:24:38 -04:00
ben marsh
214bd1108f Fix xmldoc markup for EpicGames.Perforce.
#ROBOMERGE-SOURCE: CL 17334551 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v861-17282326)

[CL 17334557 by ben marsh in ue5-release-engine-test branch]
2021-08-27 09:22:00 -04:00
ben marsh
86d9dc9254 Move functionality on PerforceConnection to extension methods, so we can have different implementations of the core connection handler.
#ROBOMERGE-SOURCE: CL 17334540 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v861-17282326)

[CL 17334541 by ben marsh in ue5-release-engine-test branch]
2021-08-27 09:20:18 -04:00
jonathan adamczewski
2b7b866f45 Move DotNETCommon/BuildUtilities to Shared/EpicGames.Build
Also moves DotNETCommon/Metadata.cs to Shared/Metadata.cs

#jira none
#rb tim.smith

#ROBOMERGE-SOURCE: CL 17116964 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v855-17104924)

[CL 17116977 by jonathan adamczewski in ue5-release-engine-test branch]
2021-08-10 11:09:18 -04:00
andrew firth
6cb4d4d4cd [P4VUtils] - add Fast reconcile options for code + all - performs a reconcile on files in P4 that are writeable but NOT checked out
[at]Ben.Marsh [at]Brandon.Dawnson
#rb Ben.Marsh

#ROBOMERGE-SOURCE: CL 17096670 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v853-17066230)

[CL 17096673 by andrew firth in ue5-release-engine-test branch]
2021-08-07 22:51:41 -04:00
ryan hummer
58994ea55e Horede: Make fileSize Optional for the Perforce PrintRecord
Perforce is sometimes omitting that field which causes pre-flights to fail, and it's not used by any code right now.

#ROBOMERGE-SOURCE: CL 17087306 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v853-17066230)

[CL 17087344 by ryan hummer in ue5-release-engine-test branch]
2021-08-06 16:12:43 -04:00
joe kirchoff
7398b01588 [Backout] - CL16961198
[FYI] Joe.Kirchoff
Original CL Desc
-----------------------------------------------------------------
Use Microsoft.CodeAnalysis.CSharp.Workspaces for code analysis

#rb none
#rnx

#ROBOMERGE-SOURCE: CL 16961691 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v838-16927207)

[CL 16961693 by joe kirchoff in ue5-release-engine-test branch]
2021-07-26 17:59:19 -04:00
joe kirchoff
2e1a78fb8b Use Microsoft.CodeAnalysis.CSharp.Workspaces for code analysis
#rb none
#rnx

#ROBOMERGE-SOURCE: CL 16961198 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v838-16927207)

[CL 16961204 by joe kirchoff in ue5-release-engine-test branch]
2021-07-26 17:15:01 -04:00
aurel cordonnier
d7923f70ef P4 Blame tool for P4V (requires input of the line number)
#rb marc.audy, ben.marsh
#jira none

#ROBOMERGE-SOURCE: CL 16852242 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v836-16769935)

[CL 16852247 by aurel cordonnier in ue5-release-engine-test branch]
2021-07-14 13:24:35 -04:00