Commit Graph

450 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
d37f8d5a01 UGS: Move global settings common to the CLI/GUI apps into a separate JSON file, making it easier to edit on Mac/Linux.
#preflight none

[CL 18560200 by Ben Marsh in ue5-main branch]
2022-01-10 10:58:21 -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
68769b3848 UGS: Use standard paths on Mac and Linux for config files and log files.
Logs:

Mac: ~/Library/Logs/Unreal Engine/UnrealGameSync
Linux: ~/

Config files:

Both: ~/.config/UnrealGameSync

#preflight none

[CL 18556422 by Ben Marsh in ue5-main branch]
2022-01-09 19:54:09 -05:00
Ben Marsh
4e031e96e0 UGS: Disable implicit using option for UGS CLI. Prevents building on Windows.
#preflight none

[CL 18554904 by Ben Marsh in ue5-main branch]
2022-01-08 15:53:43 -05:00
Ben Marsh
de8fe36b53 UGS: Fix exception initializing workspace on Mac. MacOS does not have concept of hidden directories, and the runtime throws an exception when trying to execute Windows code trying to update the attributes.
#preflight none

[CL 18554890 by Ben Marsh in ue5-main branch]
2022-01-08 15:45:12 -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
Ben Marsh
7c8ff49331 UGS: Initial version of command-line UGS client.
Currently only tested on Windows; Mac/Linux ports to follow. Workspace state and core implementation is shared with the WinForms application, allowing switching between command line and GUI as needed.

Currently implemented commands are:

  ugs init [stream-path] [-client=..] [-server=..] [-user=..] [-branch=..] [-project=..]
    Create a client for the given stream, or initializes an existing client for use by UGS.

  ugs switch [project name|project path|stream]
    Changes the active project to the one in the workspace with the given name, or switches to a new stream.

  ugs config
    Updates the configuration for the current workspace.

  ugs sync [change|'latest'] [-build] [-only]
    Syncs the current workspace to the given changelist, optionally removing all local state.

  ugs build [id] [-list]
    Runs the default build steps for the current project, or a particular step referenced by id.

  ugs status [-update]
    Shows the status of the currently synced branch.

#preflight none

[CL 18550725 by Ben Marsh in ue5-main branch]
2022-01-07 16:21:08 -05:00
Ben Marsh
da89c7bb5f UGS: Keep cached project info in the workspace state file, and move background task management into the workspace object in the GUI app.
#preflight none

[CL 18549070 by Ben Marsh in ue5-main branch]
2022-01-07 14:16:19 -05:00
Ben Marsh
7d26f16d3e UGS: Compute build steps and environment variables for custom commands as part of the sync process. This ensures that we always use the latest values, and moves a lot of business logic out of the WinForms implementation.
#preflight none

[CL 18546984 by Ben Marsh in ue5-main branch]
2022-01-07 12:30:41 -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
24a782f272 UGS: Move WorkspaceSettings into the shared library.
#preflight none

[CL 18531020 by Ben Marsh in ue5-main branch]
2022-01-06 09:52:32 -05:00
Ben Marsh
ac92544d9c UGS: Save connection information into workspace settings file, stored in the per-workspace config directory. Fix support for clients containing multiple branches and standardize/validate format of project and branch paths.
#preflight none

[CL 18530994 by Ben Marsh in ue5-main branch]
2022-01-06 09:50:45 -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
a624618831 UGS: More core functionality into a shared library.
#preflight none

[CL 18519978 by Ben Marsh in ue5-main branch]
2022-01-05 11:41:36 -05:00
Ben Marsh
212ae3ad3a UGS: Separation of Winforms/standalone functionality prior to moving into separate project.
#preflight none

[CL 18519843 by Ben Marsh in ue5-main branch]
2022-01-05 11:26:03 -05:00
Ben Marsh
32eeab5f64 UGS: Shuffling around some code prior to splitting update logic out into a separate library.
#preflight none

[CL 18519604 by Ben Marsh in ue5-main branch]
2022-01-05 11:06:22 -05: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
2cbe3cee1e UGS: Convert remaining classes to use nullable references.
#preflight none

[CL 18516003 by Ben Marsh in ue5-main branch]
2022-01-04 22:20:01 -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
06d79989e4 UGS: Remove internal state from Workspace update.
* State object is now serialized to JSON file in the workspace root before making any destructive changes.
* Most functionality in Workspace class moved into static functions, in prepartion for moving into a command line tool.
* Also convert file/directory strings into FileReference/DirectoryReference objects.

#preflight none

[CL 18489599 by Ben Marsh in ue5-main branch]
2021-12-20 20:39:22 -05:00
Ben Marsh
575083610f UGS: Store settings for particular clients, projects and workspaces under the workspace root, in a hidden ".ugs" folder. This will allow state and settings to be read implicitly for command line tools.
#preflight none

[CL 18488959 by Ben Marsh in ue5-main branch]
2021-12-20 12:41:16 -05:00
Joe Kirchoff
48ab93556b UnrealGameSync: Increase maximum value for timeout retries
#rnx
#rb trivial

[CL 18398428 by Joe Kirchoff in ue5-main branch]
2021-12-07 14:44:50 -05:00
Joe Kirchoff
0260f9e299 UnrealGameSync: Add advanced options for max batch size and file buffer
Cleanup advance settings to use numeric boxes instead of text

Update sync status before syncing so if a long sync is occuring it shows 0/X progress intead of staying on the filtering progress

#rbx
#rb none

[CL 18341947 by Joe Kirchoff in ue5-main branch]
2021-12-01 13:29:24 -05:00