Perforce CL has been reset to smaller number - Solving "ASSETX has been saved with a newer engine version and can't be loaded"

Issue

We’ve updated our perforce server setup post branching such that the CL numbers have reverted back to a lower number. e.g. we were on 9999 but now back to say 10.

Therefore we get errors like

“Package ‘ASSETNAME’ has been saved with a newer engine version and can’t be loaded. Current EngineVersion: 5.5.X-CLNUM1 (Licensee=1). Package EngineVersion: 5.5.X-CLNUM2 (Licensee=1)”

Where CLNUM1 is smaller than CLNUM2.

Solutions?

For now we’ve added code to FEngineVersion::ExactMatch where if the CLs aren’t sequential we permit assets that were saved on the old branch to be compatible, using:

SecondEngineVersion.GetBranch().Contains(CompatibleBranchName)

Is there a better way to resolve this?

Hey Cameron,

In this case it’s usually necessary to temporarily disable the check to allow loading of the assets again and then re-save them to store them with the new version number.

You could try to set the cvar s.SkipChangelistCompatibilityVersionCheck to 1 to disable it and avoid the code change, but the end result should be the same.

We recommend re-saving all your assets via the “ResavePackages” commandlet to apply the new changelist scheme in a batch operation.

That way, you would only have to disable the check once, resave, and all assets should be compatible again.

A full asset re-save can be time consuming and a logistical challenge for larger teams, so this might be something to run over a weekend with some advance preparation for the team.

Alternatively, you could run with the check disabled for everyone for a while to give you more time to migrate. This introduces the risk of loading actually incompatible assets by mistake, so you should still have a plan how you get your assets migrated in some fixed time-frame.

Kind Regards,

Sebastian

Hey Sebastian,

Appreciate the response.

I figured that might be the case, but was worth an ask in case there was an alternative solution :slight_smile:

(Our code drop between servers likely will happen more than once, so wanted to see if there was another way to handle it, other than a resave)

Thanks,

Cameron