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.