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]
- 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]
* 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]
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]