Case sensitivity and multi-platform development

To avoid the risk of errors or confusion when adding and syncing files with similar names in a cross-platform environment, be aware that:

  • A Helix Core Server on Linux is, by default, case-sensitive for names, unless configured to be run in case-insensitive mode.

  • A Helix Core Server on Windows ignores case differences in names.

If you do not know the platform of your Helix Core Server, run p4 info and look for Server version in the output, where P4D/NTX64 means Windows and LINUX26X86_64 means Linux.

Clients connected to a case-insensitive server

Users running a Linux client and connecting to a case-insensitive Helix Core Server need to know that their p4d ignores variations of case in the name of any file or path.

Suppose a Linux user submits the following three files to a case-insensitive p4d, expecting DIR and dir to be treated as two distinct directories:

p4 add //project1/dir/file1
p4 add //project1/dir/file2
p4 add //project1/DIR/file3

Clients on a case-sensitive operating system consider file3 to be in the DIR directory.

Clients on case-insensitive operating system consider file1, file2, and file3 are all in the dir directory.

Clients connected to a case-sensitive Linux server

When a Windows client adds new files to a case-sensitive Linux server, it is best to be consistent about the names of directories and files. For example, it is possible to add two files to the depot in depot syntax as //depot/main/one.c and //depot/MAIN/one.c.

Suppose a Linux user has already submitted these three files to a case-sensitive Linux server:

p4 add //project1/dir/readme.html
p4 add //project1/dir/Readme.html
p4 add //project1/dir/README.html

When a Helix Core client on a case-insensitive operating system, such as Windows, individually syncs each of those files in that same order, Readme.html overwrites readme.html, and then README.html overwrites Readme.html. Thus, instead of three files on disk, there is only one.

When a Helix Core client on a case-sensitive Linux, individually syncs each of those files in that same order, three files are sync'd.

Lowercase default for workspaces

When a client is connected to a Linux server, the default name for new client workspaces follows the name of the workstation in lowercase. For example, if a new user creates a client workspace on a Windows machine named ROCKET, this client workspace is named rocket by default. If the user later sets the P4CLIENT variable to ROCKET or Rocket, Helix Core Server displays a message that the workspace is undefined. To fix the problem, the Windows user must set P4CLIENT to rocket or unset P4CLIENT.

Case sensitivity for Helix Core Cloud

When you sign up for Helix Core Cloud, you can choose to use case-insensitive mode. Do not select the Use case-insensitive mode check box unless you have a specific need to support a case-insensitive client application, such as Epic Games' UnrealGameSync. You cannot change this mode after Helix Core Cloud deployment.

Trigger to enforce consistent names

If you want to enforce the input of consistent path names, consider writing a pre-submit trigger. See Triggering before or after commands.