Commit Graph

75 Commits

Author SHA1 Message Date
jonathan adamczewski
3d5833e02f Add a common C# method for detecting the current host platform to EpicGames.Core, and move many a test to use that code.
#jira none
#rb joe.kirchoff

#ROBOMERGE-SOURCE: CL 16593582 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v828-16531559)

[CL 16593589 by jonathan adamczewski in ue5-release-engine-test branch]
2021-06-08 17:01:47 -04:00
ben marsh
4911ccd1a0 Change EpicGames.Perforce.Managed to use IoHash, simplifying the migration to using Jupiter for storage.
#ROBOMERGE-SOURCE: CL 16592003 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v828-16531559)

[CL 16592087 by ben marsh in ue5-release-engine-test branch]
2021-06-08 15:53:22 -04:00
ben marsh
477b451515 Add an IoHash library, allowing IoHash values to be computed from C#.
#ROBOMERGE-SOURCE: CL 16591035 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v828-16531559)

[CL 16591048 by ben marsh in ue5-release-engine-test branch]
2021-06-08 15:26:10 -04:00
andrew firth
90e4596bd2 [P4VUtils] - add undo command
#review-16563620 @ben.Marsh @Marc.Audy
#rb ben.Marsh

[CL 16565952 by andrew firth in ue5-main branch]
2021-06-06 12:02:22 -04:00
Ben Marsh
d2f7a4d9e6 Horde: Automatically spawn a bundled copy of MongoDB if available. Data is stored in C:\ProgramData\Horde\Mongo by default.
[CL 16552409 by Ben Marsh in ue5-main branch]
2021-06-03 16:16:09 -04:00
Ben Marsh
df8f56b55f Horde: Catch exceptions thrown when waiting for tasks to complete.
[CL 16547590 by Ben Marsh in ue5-main branch]
2021-06-03 10:55:49 -04:00
Ben Marsh
21568f7a37 Add FileReference.WriteAllTextAsync() implementations.
[CL 16533497 by Ben Marsh in ue5-main branch]
2021-06-02 09:18:12 -04:00
Ben Marsh
86182f0999 Missing copyright notice.
[CL 16506943 by Ben Marsh in ue5-main branch]
2021-05-30 16:56:56 -04:00
Ben Marsh
30426291a0 Add a Boxed<T> class to allow wrapping a generic type in a class, so it can be passed into an async method as a mutable value.
[CL 16506942 by Ben Marsh in ue5-main branch]
2021-05-30 16:56:32 -04:00
Ben Marsh
cb1282210d Add a Boxed<T> utility class to explicitly box a struct type, allowing a mutable reference to it to be passed to async methods.
[CL 16506938 by Ben Marsh in ue5-main branch]
2021-05-30 16:48:43 -04:00
Ben Marsh
9f8bf7ff4d Horde: Fix memory overrun when deserializing WorkspaceDirectoryInfo.
[CL 16505455 by Ben Marsh in ue5-main branch]
2021-05-29 14:04:20 -04:00
Ben Marsh
28412e4980 Horde: Add support for managed workspaces reading from a Git repository.
Perforce metadata is stored in an incredibly inefficient 'flat' format, as evidenced by the painfully long metadata query and flush operations when running at scale. By storing metadata in a Git repository, we can take advantage of a more efficient temporal encoding of workspace snapshots via Merkle trees, and leverage existing Git transfer/negotiation algorithms over standard protocols for fetching updates.

Storing metadata in a Git repository also allows us to execute queries efficiently locally, while still getting server-centric storage/file locking/etc... from Perforce.

[CL 16505290 by Ben Marsh in ue5-main branch]
2021-05-29 11:44:39 -04:00
Ben Marsh
7fc3393afd Horde: Store the stream directory hash on the workspace directory info, and invalidate it whenever a file is found to be modified. This allows short-circuiting operations to modify directory structure once the initial state is cached.
[CL 16505226 by Ben Marsh in ue5-main branch]
2021-05-29 10:57:51 -04:00
Ben Marsh
12819ceff5 Horde: Fix false positives being logged in code to track down StatsV2 sync issue.
[CL 16505145 by Ben Marsh in ue5-main branch]
2021-05-29 10:12:39 -04:00
Ben Marsh
7c2d427eb6 Horde: Fix missing log output for timing data. Serilog formatting of doubles seems to be broken; format them explicitly and pass arguments as strings instead.
[CL 16505138 by Ben Marsh in ue5-main branch]
2021-05-29 10:11:37 -04:00
Ben Marsh
3d71ca79bf Horde: Make ManagedWorkspace classes used to represent snapshots public, so we can generate them from external tools.
[CL 16505135 by Ben Marsh in ue5-main branch]
2021-05-29 10:08:31 -04:00
Ben Marsh
fcc0535ce1 Add Parse() methods to Digest class.
[CL 16505121 by Ben Marsh in ue5-main branch]
2021-05-29 10:02:21 -04:00
Ben Marsh
be6bb1026d Horde: Handle not being able to read the stream snapshot gracefully.
[CL 16502910 by Ben Marsh in ue5-main branch]
2021-05-28 14:42:45 -04:00
Ben Marsh
4ea9fb826b Horde: Change back to using strings for storing file types in FileContentId objects, to avoid invalidating existing workspace caches.
[CL 16502639 by Ben Marsh in ue5-main branch]
2021-05-28 13:44:15 -04:00
Ben Marsh
91298a927f Misisng files.
[CL 16502542 by Ben Marsh in ue5-main branch]
2021-05-28 13:23:23 -04:00
Ben Marsh
cb4d6a8fd2 Horde: Change managed workspace library to store the tree as a lookup of hashed directory nodes.
[CL 16502528 by Ben Marsh in ue5-main branch]
2021-05-28 13:22:15 -04:00
Ben Marsh
c540b66eb2 Add overloads for reading/writing 16 bit integers.
[CL 16501715 by Ben Marsh in ue5-main branch]
2021-05-28 11:35:25 -04:00
Ben Marsh
09091c5803 Add a compact encoding of Perforce filetypes.
[CL 16501704 by Ben Marsh in ue5-main branch]
2021-05-28 11:34:23 -04:00
Ben Marsh
24b19ad89a Add weakly and strongly typed digest structs for C#, supporting MD5, SHA1, SHA256 (for now).
[CL 16501329 by Ben Marsh in ue5-main branch]
2021-05-28 11:07:39 -04:00
Ben Marsh
7a78fb3b22 Implement IComparer<ReadOnlyUtf8String> from ReadOnlyUtf8StringComparer.
[CL 16500513 by Ben Marsh in ue5-main branch]
2021-05-28 09:25:08 -04:00