Description

When diffing a blueprint against depot via the Content Browser context menu action "Revision Control > Diff Against Depot", restoring an instanced object property from the depot version results in the file referencing the diff asset.

This can be reproed fairly quickly with an InputMappingContext asset, since a Mapping's Triggers are instanced objects. When checking an IMC with a configured Trigger into source control, then checking out the IMC and clearing the trigger, Diff Against Depot will let you restore the trigger but it will result in a reference to an object inside the /Temp/Diff/ version of the asset.

Expected: Restoring the instanced object property should restore an instanced object in the asset itself. This may be hard to achieve since the object does not exist at that time. We could also consider not allowing restoration of instanced objects, if we cannot do it reliably.

Steps to Reproduce

Note: These repro steps use Enhanced Input assets, but the bug is not specific to Enhanced Input. It likely applies to any UPROPERTY(Instanced).

  • Create an InputAction 'IA_MyAction'
  • Create an InputMappingContext 'IMC_MyMappingContext'
    • Under Mappings, add an entry and select IA_MyAction
    • Expand it, add an entry to Triggers and select 'Hold'
      This create an instanced object.
  • Commit both to source control (reproed with P4)
  • Checkout IMC_MyMappingContext
    • Open it and clear the 'Hold' trigger
    • Resave the asset (ignore validation error)
  • Right click IMC_MyMappingContext in content browser > Revision Control > Diff Against Depot
  • Restore the cleared 'Hold' property by clicking the diff arrow. This appears to work, but...
    • Observe: Mouse-over the Hold property either left or right and see that the path contains the diff asset, /Temp/Diff/IMC_MyMappingContext.
      If you close the editor and delete the diff asset in /Saved/Diff, then restart the editor, the property fails to load and is cleared:
LogLinker: Warning: [AssetLog] Z:\....\IMC_MyMappingContext.uasset: Failed to load '/Temp/Diff/IMC_MyMappingContext-Rev-1-D4508C8644C526775D0F8CB7AA447E07': Can't find file. 

    • Expected: Either the instanced object restores correctly via the "Diff Against Depot" window or we don't allow the action of restoring instanced objects.

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-207337 in the post.

1
Login to Vote

Unresolved
ComponentUE - Gameplay - Blueprint
Affects Versions5.15.25.3
Target Fix5.5
CreatedFeb 19, 2024
UpdatedFeb 20, 2024