Unreal Engine 4 Plastic SCM Source Control Plugin
UE4PlasticPlugin is a simple Plastic SCM Source Control Plugin for Unreal Engine 4 (UE 4.11 to 4.20)
It automates tracking of assets, brings common SCM tasks inside the Editor, and provides visual diffing of Blueprints. It also helps importing an existing UE4 Project into source control, with appropriate ignore.conf file.
Quick setup from binary release
- Download the latest binary release UE4PlasticPlugin-x.x.x.zip targeting your UE4 version.
- Unzip the content of the ZIP in the root of the Unreal Engine 4.x project folder. That should create a "Plugins/" folder into your project. This is the way to go to use Plastic SCM only on a specific project.
- Unzip the content of the ZIP in the Engine/ directory of UE4.x directly for all your projects (for instance "C:\Program Files\Epic Games\4.18\Engine") That should create a "UE4PlasticPlugin" folder into the "Plugins/" subdirectory. This is the way to enable Plastic SCM for all Unreal Engine projects.
- Then, launch Unreal Engine 4.x, click on the Source Control icon "Connect to Source", select "Plastic SCM".
How to build from sources
If your project is already a C++ project, you only have to re-generate Visual Studio project files (step 4 bellow) and the plugin will get rebuild the next time you compile your project.
Else, if you want to rebuild the plugin for a Blueprint project:
- You need Visual Studio 2015 or 2017 with C++ language support (free Community Edition is fine).
- Launch the Unreal Engine 4 Editor, create a new C++ Basic Code Project (No Starter Content), for instance UE4PlasticSCM. This should launch Visual Studio, build the game project, and open it into the Editor.
- Close the Editor, then using the file explorer, create a new Plugins directory at the root of your project.
- Clone the source code of the plugin into this Plugins directory (for instance Plugins\UE4PlasticPlugin).
- Right-click on your project's .uproject file, Generate Visual Studio project files.
- In Visual Studio, Reload All and Build Solution in Development Editor mode. That's it, the plugin is built (resulting dlls are located in Plugins\UE4PlasticPlugin\Binaries\Win64).
To release the plugin, zip the Plugins folder. But before that, remove the Intermediate, Screenshots and .git folders, and also the big *.pdb files in Plugins\UE4PlasticPlugin\Binaries\Win64.
Version 1.2.2 2018/07/22 for UE4.20:
- manage connection to the server
- show current branch name and CL in status text
- display status icons to show controlled/checked-out/added/deleted/private/changed/ignored files
- display locked files, and by who
- add, duplicate a file
- move/rename a file or a folder
- revert modifications of a file (works best with the "Content Hot-Reload" option since UE4.15)
- check-in a set of files with a multi-line UTF-8 comment
- migrate (copy) an asset between two projects if both are using Plastic SCM
- delete file (but no way to check-in them, see known issues bellow)
- update workspace to latest head (Sync command)
- show history of a file
- visual diff of a blueprint against depot or between previous versions of a file
- initialize a new workspace to manage your UE4 Game Project.
- make the initial commit with a custom message
- create an appropriate ignore.conf file as part of initialization
- also permit late creation of the ignore.conf file
- show conflicted files and 3-way visual diff
- solve a merge conflict on a blueprint
- top-menu global "Sync" instead of on folder's context menu
- top-menu global "undo unchanged" and "undo all checkout"
- Partial Checkin (like Gluon, for artists)
- Plastic Cloud is fully supported
- Windows only
- Mac OS X Support
- add a setting to pass the --update option to "checkin"
- add a setting to tell UE if Plastic SCM is configured to use "read-only flags" like Perforce
- add a "clean directory" or "check-in deleted files"
- add dedicated icon for Changed files
- add dedicated icon for Conflicted files
- add dedicated icon for Replaced/Merged files
- Revert "Unchanged only" does nothing because Plastic SCM cli lacks a "checked-out but unchanged" status.
- Merge conflict from cherry-pick or from range-merge cannot be solved by the plugin: use the Plastic SCM GUI
- Merge Conflict: "Accept Target" crash the UE4.11 Editor (same with Git Plugin)
- #18 Error messages with accents are not correctly handled/displayed (for instance connection error in French)
- the Editor does not handle visual diff for renamed/moved assets
- History does not show which revision is the current/checkout one
- Editing an asset that is "Changed" but not checked-out pop up a "Files need check-out!" (UnrealEdSrv.cpp) that does nothing when clicked!
- the Editor does not show folder status and is not able to manage them
- Branch and Merge are not in the current Editor workflow
Features reserved for internal use by Epic Games with Perforce only
- tags: get labels (used for crash when the full Engine is under Plastic SCM)
- annotate: blame (used for crash when the full Engine is under Plastic SCM)
Locking UE4 assets
Binary assets should be locked for exclusive access to avoid merge conflicts.
To lock all assets on the whole
Content directory, you need to put a
lock.conf in your server directory (for instance
C:\Program Files\PlasticSCM5\server) with this content:
rep:default lockserver:mainsvr:8084 \Content
rep:UE4PlasticPluginDev lockserver:localhost:8087 \Content
You can always ask questions in Unreal Engine forums.
Report an issue
To report an issue, please use the Github issue-tracker.
- Have a look at existing issues (Open and Closed ones)
- Specify your Engine & Plugin versions, and if either are built from sources
- Describe precisely your issue
- Add reproduction steps, if possible on a basic template project
- Post a Log file when applicable (or the corresponding redacted section)
- enable UTC Timestamp in Logs: menu Preferences -> General -> Appearance -> Log Timestamp Mode
- Grab the file ProjectName/Saved/Logs/ProjectName.log
Use merge requests
If you want to help, Merge Requests are very welcome!
Copyright (c) 2016-2018 Codice Software - Sébastien Rombauts (email@example.com)