Previously, the SYNC was done prior to showing the SUBMIT FILES dialog. If another user submitted anything while the user was typing their changelist description, the CHECK IN would fail (for Skein) because the user is no longer checking in as latest. By moving the SYNC to after the changelist description is completed, this is avoided. In addition, this allows the user once again to click the CHECK IN CHANGES without syncing to head if he just wants to see what local changes he has that need checking in - a workflow which I imagine is not uncommon.
Additionally, the check-in should be aborted if the SYNC results in the user entering conflict resolution.
#rb manuel.lang, marco.anastasi
#rnx
[CL 29484477 by wouter burgers in ue5-main branch]
Results with a 40K actors changelist editor startup time:
- Before: FPerforce::AddShelvedFilesToChangelist took 2:35 min
- After: FPerforce::AddShelvedFilesToChangelist took 160.08 ms
#rb sebastien.lussier
[FYI] jeansebastien.guay
[CL 29047110 by jeanfrancois dube in ue5-main branch]
General
Add support for returning tokenized messages from validation.
Unify validation reporting for different validation entry points - in particular, source control window context menu.
Move EDataValidationUsecase to CoreUObject for use by UObject::IsDataValid.
UEditorValidatorSubsystem
Add support for validating changelists. Use of this interface allows building lists of unmodified assets to re-validate based on the changes that were made.
Allow subclassing, with functions GatherAssetsToValidateFromChangelist and ShouldValidateAsset to modify behavior of validation.
Add optional to load assets for validation to validation parameters.
Capture logs during asset loads to report as errors (optional in validation parameters).
Allow limit to number of assets to validate in validation parameters, report limit reached.
Add message log page to validation parameters.
Add validation parameter to validate referencers of deleted assets in changelists for validation
UEditorValidatorBase
Centralize dispatch to BP/Native validation in non-virtual ValidateLoadedAsset function.
Add native interface functions to UEditorValidatorBase that take FDataValidationContext.
Rename BP interface functions to have K2 prefix and different signature to native functions.
FDataValidationContext
Add validation usecase.
Add 'associated assets' to allow associating external actors with maps for validators.
UDataValidationChangelist
Support changelists based on changelist objects, file states, and simple lists of files.
Group modifications into packages/non-assets and modified/deleted ahead of time for validators to inspect.
#rb dominic.couture
[CL 28824042 by robert millar in ue5-main branch]
- Adapted existing code to propertly support external package on object not directly outered to the level.
- Generalized handling of external objects when renaming a world, resetting package loaders in ULevelStreamingLevelInstance, handling dirty external packages
- Implemented FExternalPackageHelper::CopyObjectsExternalPackageFilePathToClipboard
- Added optional PrimaryAssetDisplayName asset registry tag to allow for systems to use a display name (generalized version of ActorLabel tag)
#rb jeanfrancois.dube, patrick.enfedaque
#jira UE-197314
[CL 28537555 by richard malo in ue5-main branch]
This new delegate give users the capability to intercept and handle the submit instead of the regular flows.
Depending on the reply from the delegate the current flow will be:
- interrupted if the submit is handled by the delegate
- interrupted and set to fail state if the delegate returns an error
- continued if the delegate cannot handle the current source provider
#rb Stuart.Hill, brooke.hubert, Patrick.Enfedaque
[CL 28533359 by benoit chauvin in ue5-main branch]
Skein, the only provider that returns 'true' for 'UsesSnapshots()' requires the user to be at head when doing a check-in operation, or the check-in will fail.
This is enforced within the plugin, not the CLI, by performing an FSync prior to doing an FCheckIn. It's not easy to do the sync within the CLI as part of the check-in as the editor doesn't release its file locks when doing an FCheckIn, causing syncs to fail.
For this, a code path was introduced in SourceControlMenuHelpers that triggers a sync before triggering the check-in, when clicking the 'Check In Changes' button visible in the bottom right of the editor within UEFN.
However, this approach fails if other code paths in the editor call ChoosePackagesToCheckIn directly. This is known to happen for the MainFrame's "Submit Content" action, which was therefore disabled for Skein in #26272334, but the issue could be more widespread.
To provide a definitive fix for this issue, the sync is moved to within ChoosePackagesToCheckIn, triggered only when 'UsesSnapshots()' is true, which effectively means Skein only.
#rnx
[CL 27582511 by wouter burgers in ue5-main branch]
Unsaved asset drag-and-drop handler: When unsaved assets are selected and then dropped onto a changelist entry, they are checked out, saved, and then moved to the target changelist.
#jira UE-181906
#rb @zach.rammell
[CL 26976967 by han chu in ue5-main branch]
+ Expand source control menu context with selected changelist,
+ Expose information about if changelist is default and its source control specific identifier,
#rb Patrick.Enfedaque, Patrick.Laflamme, zach.rammell
#preflight skip
#p4v-cherrypick 25526575
#preflight 64665919b91ab13b09c2089c
[CL 25528171 by jordan hoffmann in ue5-main branch]
A side effect of showing conflicted items greyed out in the Submit Files window is that the Revert operation is also disabled as greyed-out items are not selectable. This is not desirable as the user may well want to get out of a conflict situation by reverting the conflicted file and the submit dialog is a convenient place to do that.
#rb stuart.hill, manuel.lang
#preflight none
[CL 25333894 by marco anastasi in ue5-main branch]
Previously only refreshed the changelist view
#jira UE-181901
#rb ronald.koppers
#preflight 644832fc864f15ebf5dbe7aa
[CL 25188908 by zach rammell in ue5-main branch]
* Option to check in an asset from the Content Browser Source Control Context Menu is now enabled if the SCC does not use Snapshots instead of if it uses File Revisions
* Option to check in an asset from the Scene Outliner Source Control Context Menu is now enabled if the SCC does not use Snapshots instead of if it uses File Revisions
* Ability to uncheck files in the Submit Files Window is now enabled if the SCC does not use Snapshots instead of if it uses File Revisions
* Option to revert the writable flag on an asset in the Content Browser Source Control Context Menu is now enabled if the SCC uses checkout instead of if it uses File Revisions (like the 'Make Writable' option)
#jira UCS-6630
#rb brooke.hubert, wouter.burgers
#lockdown jeanmichel.dignard
#preflight 640e6b41482188d710ff8316
[CL 24724061 by marco anastasi in ue5-main branch]