# Perforce File Types

Perforce assigns file types to determine whether files can be diffed and how they are stored. Perforce file types are as follows:

- text
- binary
- symlink (symbolic link )
- apple (multi-forked Macintosh file )
- unicode (for storing text files containing international characters on Perforce servers operating in internationalized mode)

You can set the following file type modifiers:

- +x: Execute bit set. Use for executable files.
- +w: File is always writable in workspace. (Perforce manages the write bit, and files that are not checked out are, by default, not writable.)
- +k: Enable RCS keyword expansion. If you submit text files containing the keywords listed below, Perforce expands them before storing them. Supported keywords are:

  - $Id$: File name and revision number in Perforce depot syntax.
  - $Header$: Same as $Id.
  - $Date$: Date of submission in format YYYY/MM/DD.
  - $DateTime$: Date and time of last submission in format YYYY/MM/DD hh:mm:ss. Date and time are as of the local time on the Perforce server at time of submission.
  - $Change$: Number of Perforce changelist in which file was submitted.
  - $File$: File name in depot syntax (without revision number).
  - $Revision$: Perforce revision number of file.
  - $Author$: Perforce user name of submitter.
- +l: Exclusive open (locking). If set, only one user at a time will be able to open a file for editing. Useful for binary file types, which cannot be merged.
- +C: Server stores the full compressed version of each file revision. (Binary files are always stored this way.)
- +D: Server stores deltas in RCS format (Default server storage mechanism for text files.)
- +F: Server stores full file per revision. Useful for long ASCII files that aren't read by users as text, such as PostScript files.
- +S: Server stores only the head revision. Useful for executable or .obj files.
- +m: Preserve original modtime. The file's timestamp on the local filesystem is preserved upon submission and restored upon sync. Useful for third-party DLLs in Windows environments.