Commit Graph

318 Commits

Author SHA1 Message Date
Ben Marsh
4cc55182e9 UGS: Add a filter command to allow adding and remove categories to sync.
#preflight none

[CL 18562812 by Ben Marsh in ue5-main branch]
2022-01-10 13:44:32 -05:00
Ben Marsh
4974dfe934 UGS: Add a command for listing submitted changes ("ugs changes -count=123 -lines=3")
#preflight none

[CL 18559173 by Ben Marsh in ue5-main branch]
2022-01-10 09:33:30 -05:00
Ben Marsh
a40c4c2c8b UGS: Support for running UGS CLI on Mac.
#preflight none

[CL 18554839 by Ben Marsh in ue5-main branch]
2022-01-08 15:04:19 -05:00
UnrealBot
c47e81b2cb Branch snapshot for CL 18531810
[CL 18531810 in ue5-main branch]
2022-01-06 16:44:09 +00:00
Ben Marsh
16e0f22702 CS: Add support for setting properties via the CommandLineArguments class.
#preflight none

[CL 18530605 by Ben Marsh in ue5-main branch]
2022-01-06 09:05:06 -05:00
UnrealBot
2987349d36 Branch snapshot for CL 18514113
[CL 18514113 in ue5-main branch]
2022-01-05 20:41:17 +00:00
Ben Marsh
791885c855 UGS: Fix build errors for UnrealGameSyncLauncher and port to use new P4 library.
#preflight none

[CL 18518998 by Ben Marsh in ue5-main branch]
2022-01-05 10:22:48 -05:00
Ben Marsh
34c1389331 UGS: Add some more #nullable annotations.
#preflight none

[CL 18515090 by Ben Marsh in ue5-main branch]
2022-01-04 20:01:23 -05:00
Ben Marsh
7a9e8c8b5c UGS: Significant refactor of UGS internals.
- 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]
2022-01-04 14:03:17 -05:00
Ben Marsh
e7ab127649 [CS] Various improvements to Perforce library.
- 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]
2022-01-03 17:18:56 -05:00
Ben Marsh
9d15d0651c [CS] Add utility methods for writing word-wrapped text to the console.
#preflight none

[CL 18503877 by Ben Marsh in ue5-main branch]
2022-01-03 17:00:37 -05:00
Ben Marsh
22a40c102c UBT: Support for single-file compile of headers.
When a header is specified via the -File=... or -FileList=... arguments, we scan the engine and project directories for source files and parse the include directives from them. A lookup table is built that maps from filename to files that include it, allowing building a (conservative) superset of the files which may include it.
#preflight 61bd194a6041819fd179bf21

[CL 18486253 by Ben Marsh in ue5-main branch]
2021-12-17 18:28:16 -05:00
Ben Marsh
4d9a141cb1 BuildGraph: Add a task for querying all modified files since a certain changelist. Can be used in conjuction with Horde UE_HORDE_LAST_SUCCESS_CL to isolate files to rebuild.
#preflight none

[CL 18478415 by Ben Marsh in ue5-main branch]
2021-12-16 15:03:33 -05:00
Ben Marsh
a59ef99c07 BuildGraph: New mechanism for declaring graphs using C# code (WIP).
Nodes can now be implemented by arbitary C# methods. Graph structure is specified through expression trees implemented using Bg* types, which are not substituted with values until execution time. Doing so allows determination of node and option dependencies for a particular target, allowing us to generate dynamic UI for presenting relevant settings to the user.

Includes partial implementation of Installed Build script as an example implementation.

#preflight 61bb85d46c2686e86322eec9

[CL 18477305 by Ben Marsh in ue5-main branch]
2021-12-16 13:55:22 -05:00
Ben Marsh
35a6212c01 Horde: Strip VT100 escape codes from log output.
#preflight none

[CL 18476242 by Ben Marsh in ue5-main branch]
2021-12-16 11:24:47 -05:00
Ben Marsh
e2d80dd25c Horde: Handle edge cases with values for RedisString objects.
#preflight none

[CL 18475195 by Ben Marsh in ue5-main branch]
2021-12-16 08:42:15 -05:00
Ben Marsh
c5b39b6dae Horde: Remove debug code.
#preflight none

[CL 18473554 by Ben Marsh in ue5-main branch]
2021-12-15 23:32:46 -05:00
Ben Marsh
0c6981996e Horde: Fix race condition in call to AgentService.GetRate().
#preflight none

[CL 18473198 by Ben Marsh in ue5-main branch]
2021-12-15 22:19:45 -05:00
Ben Marsh
7e7bec2660 Horde: Include hourly rate for using an agent in returned agent and job documents.
Global config file now includes a list of conditions which are evaluated against an agent's properties. The first condition that matches specifies the rate for the agent. This should give us plenty of flexibility in pricing out esoteric configurations dependent on factors like instance type, OS, etc...

Rates are cached in Redis and re-evaluated every 5 minutes.

#fyi Josh.Engebretson
#preflight none

[CL 18469963 by Ben Marsh in ue5-main branch]
2021-12-15 14:47:12 -05:00
Ben Marsh
b8dcffbecd Horde: Fix multi-line errors creating multiple single-line events, rather than one event that covers the whole thing.
[CL 18467105 by Ben Marsh in ue5-main branch]
2021-12-15 10:19:50 -05:00
Ben Marsh
1f185de5a4 Combine interface for creating native and external Perforce client connections.
- 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]
2021-12-14 21:31:40 -05:00
Ben Marsh
cff5ed646f Horde: Enable code analysis warnings for Horde.Build (currently IDE only due to long build times, but also enabled in Docker builds)
[CL 18462178 by Ben Marsh in ue5-main branch]
2021-12-14 18:44:21 -05:00
Ben Marsh
d4290f43ae Fix code analysis warning.
[CL 18451019 by Ben Marsh in ue5-main branch]
2021-12-13 20:35:22 -05:00
Ben Marsh
72dbf9aa4e Enable code analysis (and fix warnings) for EpicGames.Perforce.
#preflight 61b7b75dc65177a67488ca5e

[CL 18449150 by Ben Marsh in ue5-main branch]
2021-12-13 16:50:25 -05:00
Ben Marsh
147fe2c3f3 Restore code deleted by robomerge.
[CL 18448498 by Ben Marsh in ue5-main branch]
2021-12-13 15:50:01 -05:00