Description

Files and directories with special characters %, @, * and # are not escaped when sent to the P4 Client API. For example, an '@' character is common in root workspace folders when using concurrent builds in Jenkins. But when sent unescaped to the P4 Client API, the text following it is interpreted by Perforce as a changelist number, causing source control operations to fail.

Example messages:
LogSourceControl: Attempting 'p4 fstat -Or F:\ws\dev@2/xxxxx.uasset'
SourceControl: Error: CommandMessage Command: UpdateStatus, Error: Invalid changelist/client/label/date '@2/xxxxx.uasset'.

Escaping special characters should probably be implemented here:

[Engine\Plugins\Developer\PerforceSourceControl\Source\PerforceSourceControl\Private\PerforceSourceControlOperations.cpp:1891]
for (FString File : InCommand.Files)

{ // (...) }
Steps to Reproduce
  • Open a project and enable Perforce source control integration
  • Create an asset with a path or filename containing a character with special meaning to Perforce, such as %@#*
  • Attempt any source control operation on this asset
  • The operation will fail. For the @ character, the text following it is interpreted as a changelist number.

Have Comments or More Details?

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

0
Login to Vote

Backlogged
ComponentUE - Editor - Workflow Systems
Affects Versions5.4
CreatedJun 14, 2024
UpdatedJun 18, 2024
View Jira Issue