Perforce 2005.1 Command Reference | ||
<< Previous Chapter Global Options |
Table of Contents Index Perforce on the Web |
Next Chapter >> Views |
Perforce has its own method of file specification which remains unchanged across operating systems. If a file is specified relative to a client root, it is said to be in client syntax. If it is specified relative to the top of the depot, it is said to be in depot syntax. A file specified in either manner can be said to have been specified in Perforce syntax.
Perforce file specifiers always begin with two slashes (//), followed by the client or depot name, followed by the full pathname of the file relative to the client or depot root directory.
Path components in client and depot syntax are always separated by slashes (/), regardless of the component separator used by the local operating system or shell.
An example of each syntax is provided below
Syntax |
Example |
---|---|
Local syntax |
/staff/user/usercws/file.c |
Depot syntax |
//depot/source/module/file.c |
Client syntax |
//usercws/file.c |
The # and @ specifiers refer to specific revisions of files as stored in the depot:
Modifier |
Meaning |
---|---|
file#n |
Revision specifier: The nth revision of file. |
file#0 |
The nonexistent revision: If a revision of file exists in the depot, it is ignored. This is useful when you want to remove a file from the client workspace while leaving it intact in the depot, as in p4 sync file#none. The filespec #0 may be used as a synonym for #none - the nonexistent revision can be thought of as the one that "existed" before the first revision was submitted to the depot. |
file#head |
The head revision (latest version) of file. Except where explicitly noted, this is equivalent to referring to the file without a revision specifier. |
file#have |
The revision on the current client: the revision of file last p4 synced into the client workspace |
file@n |
Change number: The revision of file immediately after changelist n was submitted. |
file@labelname |
Label name: The revision of file in the label labelname. |
file@clientname |
Client name: The revision of file last taken into client workspace clientname. |
file@datespec |
Date and time: The revision of file at the date and time specified. If no time is specified, the head revision at 00:00:00 on the morning of the date specified is returned. Dates are specified yyyy/mm/dd:hh:mm:ss or yyyy/mm/dd hh:mm:ss (with either a space or a colon between the date and the time). The datespec @now may be used as a synonym for the current date and time. |
Revision specifiers can be used to operate on many files at once: p4 sync //myclient/...#4 copies the fourth revision of all non-open files into the client workspace.
If specifying files by date and time (i.e., using specifiers of the form file@datespec), the date specification should be parsed by your local shell as a single token. You may need to use quotation marks around the date specification if you use it to specify a time as well as a date.
Some Perforce file specification characters may be intercepted and interpreted by the local shell, and need to be escaped before use. For instance, # is used as the comment character in most UNIX shells, and / may be interpreted by (non-Perforce) DOS commands as an option specifier. File names with spaces in them may have to be quoted on the command line.
For information on these and other platform-specific issues, see the release notes for your platform.
Revision ranges have two separate meanings, depending on which command you're using. The two meanings are:
The pathname component separator (/) and recursive subdirectory wildcards (...) are not permitted in file names, label names, or other identifiers.
To refer to files containing the Perforce revision specifier wildcards (@ and #), file matching wildcard (*), or positional substitution wildcard (%%) in either the file name or any directory component, use the ASCII expression of the character's hexadecimal value. ASCII expansion applies only to the following four characters:
To add a file such as [email protected], force a literal interpretation of special characters by using:
p4 add -f //depot/path/[email protected]
When you submit the changelist, the characters are automatically expanded and appear in the change submission form as follows:
//depot/path/status%40june.txt
After submitting the changelist with the file's addition, you must use the ASCII expansion in order to sync it to your workspace or edit it within your workspace:
p4 sync //depot/path/status%40june.txt
Most special characters tend to be difficult to use in filenames in cross-platform environments: UNIX separates path components with /, while many DOS commands interpret / as a command line switch. Most UNIX shells interpret # as the beginning of a comment. Both DOS and UNIX shells automatically expand * to match multiple files, and the DOS command line uses % to refer to variables.
p4 edit //depot/path/status%40june.txt
Similarly, although non-ASCII characters are allowed in filenames and Perforce identifiers, entering these characters from the command line may require platform-specific solutions. Users of GUI-based file managers can manipulate such files with drag-and-drop operations.
Perforce 2005.1 Command Reference | ||
<< Previous Chapter Global Options |
Table of Contents Index Perforce on the Web |
Next Chapter >> Views |