.\" Copyright 2000 Perforce Software .\" $Id: //depot/r05.2/p4-doc/man/p4.1#1 $ .TH P4 1 "7 July 2001" .SH NAME p4 \- Perforce source management system client .SH SYNOPSIS .B p4 [ .BI options ] .BI command .BI arg ... .SH DESCRIPTION .B p4 is the client program used to interact with the source management system repository server. .SH OPTIONS .TP .B -c \fIclient\fP The -c flag specifies the client name, overriding the value of $P4CLIENT in the environment and the default (the hostname). .TP .B -d \fIdirectory\fP The -d flag specifies the current directory, overriding the value of $PWD in the environment and the default (the current directory). .TP .B -H \fIhost\fP The -H flag specifies the host name, overriding the value of $P4HOST in the environment and the default (the hostname). .TP .B -p \fIport\fP The -p flag specifies the server's listen address, overriding the value of $P4PORT in the environment and the default (perforce:1666). .TP .B -P \fIpassword\fP The -P flag specifies the password, overriding the value of $P4PASSWD in the environment. .TP .B -s The -s flag causes the p4 client program to prefix each line of output with a tag (error, warning, info, text, exit) so as to make it amenable to scripting. .TP .B -u \fIuser\fP The -u flag specifies the user name, overriding the value of $P4USER, $USER, and $USERNAME in the environment. .TP .B -v \fIx\fP The -v flag sets the debug output level. .TP .B -x \fIfile\fP The -x flag instructs p4 to read arguments, one per line, from the named file. If the file is named '-', then standard input is read. .TP .B -V The -V flag displays the version of the p4 client command and exits. .SH USAGE .B p4 is the client interface for the .SM Perforce source management system. .B p4 connects to the server daemon, .B p4d, which manages access to the central respository, or depot. .B p4 uses environment variable .B $P4PORT to determine the connection address of the server daemon (using .B perforce:1666 as default). Each .B p4 client workspace is identified by a name, determined by the environment variable .B $P4CLIENT (using hostname as default.) Information associated with each client workspace includes a root directory in the client machine file system and a view definition which provides a mapping between file names on the client and files in the depot. This information is maintained in the depot database. .LP The following commands are recognized: .LP .nf add Open a new file to add it to the depot admin Perform administrative operations on the server branch Create or edit a branch specification branches Display list of branches change Create or edit a changelist description changes Display list of pending and submitted changelists client Create or edit a client specification and its view clients Display list of known clients counter Display, set, or delete a counter counters Display list of known counters delete Open an existing file to delete it from the depot depot Create or edit a depot specification depots Display list of depots describe Display a changelist description diff Display diff of client file with depot file diff2 Display diff of two depot files dirs List subdirectories of a given depot directory edit Open an existing file for edit filelog List revision history of files files List files in the depot fix Mark jobs as being fixed by named changelists fixes List what changelists fix what job flush Fake a 'p4 sync' by not moving files fstat Dump file info group Change members of a user group groups List groups (of users) have List revisions last synced help Print this help message info Print out client/server information integrate Schedule integration from one file to another integrated Show integrations that have been submitted job Create or edit a job (defect) specification jobs Display list of jobs jobspec Edit the job template label Create or edit a label specification and its view labels Display list of labels labelsync Synchronize label with the current client contents lock Lock an opened file against changelist submission obliterate Remove files and their history from the depot opened Display list of files opened for pending changelist passwd Set the user's password on the server (and Windows client) print Retrieve a depot file to the standard output protect Modify protections in the server namespace rename Explains how to rename files reopen Change the type or changelist number of an opened file resolve Merge open files with other revisions or files resolved Show files that have been merged but not submitted revert Discard changes from an opened file review List and track changelists (for the review daemon) reviews Show what users are subscribed to review files set Set variables in the registry (Windows only) submit Submit open files to the depot sync Synchronize the client with its view of the depot triggers Modify list of pre-submit triggers typemap Modify the file name-to-type mapping table unlock Release a locked file but leave open user Create or edit a user specification users Display list of known users verify Verify that the server archives are intact where Show how file names map through the client view .fi .SH COMMANDS .TP .B p4 add [ -c changelist# ] [ -t filetype ] file ... .IP Open a new file for adding to the depot. If the file exists on the client it is read to determine if it is text or binary. If it does not exist it is assumed to be text. The file must either not exist in the depot, or it must be deleted at the current head revision. Files may be deleted and re-added. .IP If the -c flag is given the open files are associated with the specified pending changelist number; otherwise the open files are associated with the default changelist. .IP If file is already open it is moved into the specified pending changelist. It is not permissible to reopen a file for add unless it was already open for add. .IP If -t filetype is given the file is explicitly opened as that filetype. Otherwise, the filetype is determined by the file name-to-type mapping table managed by "p4 typemap". If the file name is not mapped in that table, "p4 add" senses the filetype by examining the file"s contents and execution permission bits. See "p4 help filetypes" for a complete list. .TP .B p4 admin checkpoint [ -z ] [ prefix ] .TP .B p4 admin stop .IP "p4 admin checkpoint" causes the server to take a checkpoint and to copy the journal to a numbered journal file. It is equivalent to "p4d -jc". .IP The -z flag causes the checkpoint and saved journal to be saved in compressed (gzip) format, with the ".gz" suffix on the file names. .IP If a prefix is specified, the files will be named prefix.ckp.n and prefix.jnl.n respectively, where n is a sequence number. Without prefix, the default filenames checkpoint.n and journal.n will be used. .IP "p4 admin stop" stops the server, terminating any requests currently running. It first locks the database to ensure that no updates are taking place, but otherwise is brutal as it does not wait for users to finish what they are doing. (For NT users, this will work whether you are running Perforce as a server or a service.) .TP .B p4 branch [ -f ] name .TP .B p4 branch -d [ -f ] name .TP .B p4 branch -o name .TP .B p4 branch -i [ -f ] .IP Create a new branch specification or edit an existing branch specification. The specification form is put into a temporary file and the editor (given by the environment variable $P4EDITOR) is invoked. .IP The branch specification form contains the following fields: .RS .TP Branch: The branch name (read only.) .RE .RS .TP Owner: The user who created this branch. Can be changed. .RE .RS .TP Update: The date specification was last modified. .RE .RS .TP Access: The date of the last "integrate" using this branch. .RE .RS .TP Description: A short description of the branch (optional). .RE .RS .TP Options: Flags to change the branch behavior. .RE .RS .RS .TP locked Allows only the branch owner to change its specification. Prevents the branch from being deleted. .RE .RE .RS .TP View: A mapping from the source files of the branch to the target files of the branch. Both the left and right hand sides of the mappings refer to the depot namespace. See "p4 help views" for more on views. .RE .IP New branches are created with a default view that maps all depot files back into themselves. This view must be changed before the branch view is usable. .IP A branch definition is used only by the "p4 integrate" command. .IP The -d flag deletes the named branch. .IP The -o flag causes the named branch specification to be written to the standard output. The user"s editor is not invoked. .IP The -i flag causes a branch specification to be read from the standard input. The user"s editor is not invoked. .IP The -f flag allows the superuser to delete any branch; normally branches can only be deleted by their owner. -f also allows the last modified date to be set. .TP .B p4 branches .IP Reports the list of all branches currently known to the system. Branches takes no arguments. .TP .B p4 change [ -f -s ] [ changelist# ] .TP .B p4 change -d [ -f -s ] changelist# .TP .B p4 change -o [ -s ] [ changelist# ] .TP .B p4 change -i [ -f -s ] .IP "p4 change" creates and edits changelists and their descriptions. With no argument, "p4 change" creates a new changelist. If a changelist number is given, "p4 change" edits an existing, pending changelist. In both cases the changelist specification is placed into a form and the user"s editor is invoked. .IP The -d flag discards a pending changelist, but only if it has no opened files and no pending fixes associated with it. Use "p4 opened -a" to report on opened files and "p4 reopen" to move them to another changelist. Use "p4 fixes -c changelist#" to report on pending fixes and "p4 fix -d -c changelist# jobs..." to delete pending fixes. The changelist can only be deleted by the user and client who created it, or by a superuser using the -f flag. .IP The -o flag causes the changelist specification to be written to the standard output. The user"s editor is not invoked. .IP The -i flag causes a changelist specification to be read from the standard input. The user"s editor is not invoked. .IP The -f flag allows the superuser to update or delete other users" pending changelists. -f also allows the superuser to delete submitted changelists once they have been emptied of files via "p4 obliterate". Normally, submitted changelists are immutable. .IP The -s flag extends the list of jobs to include the fix status for each job. On new changelists, the fix status begins as the special status "ignore", which if left unchanged simply excludes the job from those being fixed. Otherwise, the fix status, like that applied with "p4 fix -s", becomes the job"s status when the changelist is committed. Note that this option is not meant for end-users. It exists to support propagating information from an external defect tracking system. .TP .B p4 changes [ -i -l -m max -s status ] [ file[revRange] ... ] .IP Reports the list of all pending and submitted changelists currently known to the system. .IP If files are specified, "p4 changes" limits its report to changelists that affect those files. If the file specification includes a revision range, "p4 changes" limits its report to submitted changelists that affect those particular revisions. See "p4 help revisions" for help specify revisions. .IP The -i flag also includes any changelists integrated into the specified files. .IP The -l flag produces long output with the full text of the changelist descriptions. .IP The -m max flag limits changes to the "max" most recent. .IP The -s status flag limits the output to pending or submitted changelists. .TP .B p4 client [ -f -t template ] [ name ] .TP .B p4 client -d [ -f ] name .TP .B p4 client -o [ -t template ] [ name ] .TP .B p4 client -i [ -f ] .IP With no argument "p4 client" creates a new client view specification or edits an existing client specification. The client name is taken from the environment variable $P4CLIENT if set, or else from the current host name. The specification form is put into a temporary file and the editor (given by the environment variable $P4EDITOR) is invoked. If a name is given, the specification of the named client is displayed read-only. .IP The specification form contains the following fields: .RS .TP Client: The client name (read only.) .RE .RS .TP Host: If set, restricts access to the named host. If unset, access is allowed from any host. .RE .RS .TP Owner: The user who created this client. Can be changed. .RE .RS .TP Update: The date this specification was last modified. .RE .RS .TP Access: The date this client was last used in any way. .RE .RS .TP Description: A short description of the client (optional). .RE .RS .TP Root: The root directory of the client file workspace (given in local file system syntax), under which all client files will be placed. If you change this, you must physically relocate any files as well. The special name "null" may be used to allow files to be mapped to multiple drives on Windows clients. .RE .RS .TP Options: Flags to change the client behavior. The defaults are marked with *. .RE .RS .RS .TP allwrite .TP noallwrite * Leaves all files writable on the client; else only checked out files are writable. .RE .RE .RS .RS .TP clobber .TP noclobber * Allows "p4 sync" to overwrite writable files on the client. .RE .RE .RS .RS .TP compress .TP nocompress * Compresses data sent between the client and server to speed up slow connections. .RE .RE .RS .RS .TP locked .TP unlocked * Allows only the client owner to use the client or change its specification. Prevents the client from being deleted. .RE .RE .RS .RS .TP modtime .TP nomodtime * Causes "p4 sync" to preserve file modification time from submitting client, as with files with +m type modifier. Otherwise modification time is left as when the file was fetched. .RE .RE .RS .RS .TP rmdir .TP normdir * Makes "p4 sync" attempt to delete a client directory when all files are removed. .RE .RE .IP LineEnd: Set line ending character(s) for client text files. .RS .RS .TP local Use mode native to the client (default). .RE .RE .RS .RS .TP unix linefeed: UNIX style. .RE .RE .RS .RS .TP mac carriage return: Macintosh style. .RE .RE .RS .RS .TP win carriage return-linefeed: Windows style. .RE .RE .RS .RS .TP share hybrid: writes UNIX style but reads UNIX or Windows style. .RE .RE .RS .TP View: A mapping from the files in the depot to files in the client workspace. This is the mechanism by which you select what files you want on your client and where you want them to be. The default view maps all depot files onto the client. See "p4 help views" for view syntax. A new view takes effect on the next "p4 sync". .RE .RS .TP Note: changing the client root does not actually move the client files; you must relocate them yourself. Similarly, changing the "LineEnd" option does not actually update the client files; you can refresh them with "p4 sync -f". .RE .IP The -d flag causes the named client to be deleted, as long as it has no opened files. The -f forces the delete .IP The -o flag causes the named client specification to be written to the standard output. The user"s editor is not invoked. .IP The -i flag causes a client specification to be read from the standard input. The user"s editor is not invoked. .IP The -t flag constructs the client"s view by copying the named template client"s view, instead of using the existing view or creating a new default view. .IP The -f flag allows the superuser to modify locked clients; normally locked clients can only be modified by their owner. -f also allows the last modified date to be set. .TP .B p4 clients .IP Reports the list of all clients currently known to the system. .TP .B p4 counter name .TP .B p4 counter [ -f ] name value .TP .B p4 counter -d name .IP The first form displays the value of the named counter. .IP The second form sets the counter to the given value. The -f flag sets even those used by Perforce, as listed in "p4 help counters". Moving the "change" counter backwards can have very bad results. .IP The third form deletes the counter. This usually has the same effect as setting the counter to 0. .IP "p4 counter" requires "review" access granted by "p4 protect". The -f flag require "super" access. .TP .B p4 counters .IP Reports the list of all counters in use by the server. There are four counters the server uses directly: .RS .RS .TP change the current change number .RE .RE .RS .RS .TP job the current job number .RE .RE .RS .RS .TP journal the current journal number .RE .RE .RS .RS .TP upgrade the server database upgrade level .RE .RE .IP Other counters can be created by the "p4 counter" or "p4 review" commands. .TP .B p4 delete [ -c changelist# ] file ... .IP Opens a file that currently exists in the depot for deletion. If the file is present on the client it is removed. If a pending changelist number is given with the -c flag the opened file is associated with that changelist, otherwise it is associated with the "default" pending changelist. .IP Files that are deleted generally do not appear on the have list. .TP .B p4 depot name .TP .B p4 depot -d name .TP .B p4 depot -o name .TP .B p4 depot -i .IP Create a new depot specification or edit an existing depot specification. The specification form is put into a temporary file and the editor (given by the environment variable $P4EDITOR) is invoked. .IP The depot specification form contains the following fields: .RS .TP Depot: The name of the depot. This cannot conflict with any branch, client, or label name. .RE .RS .TP Owner: The user who created this depot. .RE .RS .TP Date: The date this specification was last modified. .RE .RS .TP Description: A short description of the depot (optional). .RE .RS .TP Type: "local" or "remote". Normally depots are locally managed by the server and occupy space in the server"s root directory. A "remote" depot is a reference to files in another Perforce server. .RE .RS .TP Address: For remote depots, the $P4PORT (connection address) of the remote server. .RE .RS .TP Map: Path translation information, in the form of a file pattern with a single ... in it. For local depots, this path is relative to the server"s root directory (e.g. depot/...). For remote depots, this path refers to the remote server"s namespace (e.g. //depot/...). .RE .IP The -d flag deletes the named depot. If any files exist in the depot they must be removed first with "p4 obliterate". .IP The -o flag causes the named depot specification to be written to the standard output. The user"s editor is not invoked. .IP The -i flag causes a depot specification to be read from the standard input. The user"s editor is not invoked. .TP .B p4 depots .IP Reports the list of all depots created via the depot command. Depots takes no arguments. .TP .B p4 describe [ -d<flag> -s ] changelist# .IP Display a changelist description, including the changelist number, user, client, date of submission, textual description, list of affected files and diffs of files updated. Pending changelists are flagged as "pending" and the list of affected files and file diffs is not displayed. .IP The -d<flag> passes a flag to the built-in diff routine to modify the output: -dn (RCS), -dc (context), -ds (summary), -du (unified). .IP The -s flag requests a shortened form of describe that doesn"t include the diffs of files updated. .TP .B p4 diff [ -d<flag> -f -sa -sd -se -sr -t ] [ file[rev] ... ] .IP Run diff (on the client) of a client file against the corresponding revision in the depot. The file is only compared if the file is opened for edit or the revision provided with the file argument is not the same as the revision had by the client. See "p4 help revisions" for help specifying revisions. .IP If no file argument is given, diff all open files. This can be used to view pending changelists. .IP The -d<flag> passes a flag to the built-in diff routine to modify the output: -dn (RCS), -dc (context), -ds (summary), -du (unified). .IP The -f flag forces a diff for every file, regardless of whether they are opened or if the client has the named revision. This can be used to verify the client contents. .IP The -s flag reduces the output of diff to the names of files satisfying the following criteria: .RS .RS .TP -sa Opened files that are different than the revision in the depot, or missing. .RE .RE .RS .RS .TP -sd Unopened files that are missing on the client. .RE .RE .RS .RS .TP -se Unopened files that are different than the revision in the depot. .RE .RE .RS .RS .TP -sr Opened files that are the same as the revision in the depot. .RE .RE .IP The -t flag forces "p4 diff" to diff even files with non-text (binary) types. .IP If the environment variable $P4DIFF is set then the named program is used rather than the implementation of diff included in the client. The -d<flag>command can be used to pass arguments to the external program. The -s flag is only implemented internally. .TP .B p4 diff2 [ -d<flag> -q -t ] file1 file2 .TP .B p4 diff2 [ -d<flag> -q -t ] -b branch [ [ file1 ] file2 ] .IP Run diff (on the server) of two files in the depot. Both files may optionally include a revision specification; the default is to compare the head revision. See "p4 help revisions" for help specifying revisions. Wildcards may be used, but they must match between file1 and file2. .IP Diff2 introduces each diff with a header line of the form .IP ==== file1 (type1) - file2 (type2) ==== summary .IP file1 or file2 may be "<none>", meaning that only one of the matched files actually exists at the given revision. The summary is one of: "identical" - file contents are identical and types are the same, "types" - file contents are identical but the types are different, and "content" - file contents are different. .IP The -b flag causes diff2 to use the branch view to specify the pairs of files to compare. If file arguments are also present, they can further limit the files and specify the revisions for comparison. Note that if only one file is given, it restricts the right-hand side of the branch view. .IP The -d<flag> passes a flag to the built-in diff routine to modify the output: -dn (RCS), -dc (context), -ds (summary), -du (unified). .IP The -q suppresses the display of the header lines of files whose content and types are identical and suppresses the actual diff for all files. .IP The -t flag forces "p4 diff2" to diff even files with non-text (binary) types. .TP .B p4 dirs [ -C -D -H ] dir[revRange] ... .IP List any directories matching the file pattern dir. Because of implementation details, "p4 dirs" does not allow the ... wildcard. Use the * wildcard instead. .IP Perforce does not track directories per se, but instead considers a path a directory if there are any undeleted files with that path as a prefix. .IP If the dir argument includes a revision range, then only directories with files of those revisions are listed. Normally directories with any files are listed. See "p4 help revisions" for help specifying revisions. .IP The -C flag limits the output to directories that are mapped on the current client. .IP The -D includes directories with only deleted files. .IP The -H flag lists directories of files on the "have" list. .TP .B p4 edit [ -c changelist# ] [ -t filetype ] file ... .IP Open an existing file for edit. The server notes that the current user on the current client has the file opened, and then changes the file permission from read-only to read/write. .IP If -c changelist# is given, the file is put into the pending changelist; the changelist must have been previously created by "p4 change". Otherwise the file is opened in the "default" (unnumbered) changelist. .IP If -t filetype is given the file is explicitly opened as that filetype. Otherwise, the type of the previous revision is reused. See "p4 help filetypes" for a complete list. .TP .B p4 filelog [ -i -l -m maxRevs ] file ... .IP List the revision history of the files named, working backwards from the latest revision to the first. .IP The -i flag follows branches. If a file was created by branching, "p4 filelog" also lists the revisions of the source file, but only those revisions leading up to the branch point. .IP The -l flag produces long output with the full text of the changelist descriptions. .IP The -m maxRevs displays at most "maxRevs" revisions per file. .TP .B p4 files file[revRange] ... .IP List files named or matching wild card specification. Display shows depot file name, revision, file type, change action and changelist number of the current head revision. If client file names are given as arguments the view mapping is used to list the corresponding depot files. .IP If the file argument has a revision, then all files as of that revision are listed. If the file argument has a revision range, then only files selected by that revision range are listed, and the highest revision in the range is used for each file. Normally, the head revision is listed. See "p4 help revisions" for help specifying revisions. .TP .B p4 fix [ -d ] [ -s status ] -c changelist# jobName ... .IP "p4 fix" marks each named job as being fixed by the changelist number given with -c. The changelist may be either pending or, submitted and the jobs may be still be opened or already closed (fixed by another changelist). .IP If the changelist has already been submitted and the job is still open then "p4 fix" marks the job closed. If the changelist has not been submitted and the job is still open, the job will be marked closed when the changelist is submitted. If the job is already closed, it is left alone. .IP The -d flag causes the specified fixes to be deleted. This does not otherwise affect the named changelist or jobs. .IP The -s uses the given status instead of the default "closed". This status is reported by "p4 fixes" and also reflected in the job"s status (immediately if the changelist is committed; on submission if the changelist is pending). .TP .B p4 fixes [ -i ] [ -j jobName ] [ -c changelist# ] [ file[revRange] ... ] .IP "p4 fixes" shows all jobs with fix records associated with them, along with the changelist number of the fix. Fix records are created either directly with the "p4 fix" command or via changelist creation with the "p4 change" and "p4 submit" commands. .IP The "p4 fixes" command show fixes regardless of whether the changelists are submitted or still pending. .IP By default, "p4 fixes" lists all fixes. This list can be limited in any of three ways. If -j jobName is given, only fixes for the named job are listed. If -c changelist# is given, only fixes from the numbered changelist are listed. If a file (pattern) is given, only fixes for submitted changelists affecting that file (or set of files) are listed. The file pattern may include wildcards and/or a revision number range. See "p4 help revisions" for help specifying revisions. .IP The -i flag also includes any fixes made by changelists integrated into the specified files. .TP .B p4 flush [ -f -n ] [ file[revRange] ... ] .IP "p4 flush" is a variant of "p4 sync" that bypasses the client file update. It can be used to make the server believe that a client workspace already has a file. .IP Because "p4 flush" doesn"t move files, it works especially quickly. As its purpose is to correct the Perforce server when it is wrong about what files are on the client, use of "p4 flush" can confuse the server if you are wrong about the client"s contents. .IP "p4 flush" takes the same flags as "p4 sync". .TP .B p4 fstat [ -c changelist# ] [ -C -l -H -P -s -W ] file[rev] ... .IP Fstat is intended for programmatic interfaces into Perforce. It dumps information about each file, with each item of information on a separate line. Fstat is best used within a Perforce API application where the items can be accessed as variables, but its output is also suitable for parsing from the client command output. .IP The fields that fstat displays are: .RS .RS .TP clientFile -- local path .RE .RE .RS .RS .TP depotFile -- name in depot .RE .RE .RS .RS .TP headAction -- action at head rev, if in depot .RE .RE .RS .RS .TP headChange -- head rev changelist#, if in depot .RE .RE .RS .RS .TP headRev -- head rev #, if in depot .RE .RE .RS .RS .TP headType -- head rev type, if in depot .RE .RE .RS .RS .TP headTime -- head rev mod time, if in depot .RE .RE .RS .RS .TP haveRev -- rev had on client, if on client .RE .RE .RS .RS .TP action -- open action, if opened .RE .RE .RS .RS .TP change -- open changelist#, if opened .RE .RE .RS .RS .TP unresolved -- unresolved integration records .RE .RE .RS .RS .TP otherOpen -- set if someone else has it open .RE .RE .RS .RS .TP otherLock -- set if someone else has it locked .RE .RE .RS .RS .TP ourLock -- set if this user/client has it locked .RE .RE .IP The -c changelist# flag instructs fstat to display only files affected since the given changelist number. This operation is much faster than using a revision range on the affected files. .IP The -C, -H, and -W flags limits the output to files that are mapped, synced, and opened (respectively) on the current client. .IP The -P flag outputs the clientFile in Perforce syntax (//client/). Normally, clientFile is in local host syntax. .IP The -l includes a fileSize field (which may be expensive to compute). .IP The -s flag shortens the output by excluding client related data about the file. .TP .B p4 group name .TP .B p4 group -d name .TP .B p4 group -o name .TP .B p4 group -i .IP Create a new user group or add/delete members from an existing group. A group"s members can be users and/or other groups. The group specification form is put into a temporary file and the editor (given by the environment variable $P4EDITOR) is invoked. .IP A group exists when it has any users or other groups in it, and ceases to exist if all users and groups in it are removed. .IP Each group has a MaxResults field, which limits the data size for operations that the users in that group can perform. If MaxResults is "unlimited", no limit is imposed. A user"s MaxResults is the highest of any group with a limit to which he belongs. If the user belongs to no group with a limit, then his MaxResults is unlimited. See "p4 help maxresults" for more information. .IP The -d flag deletes all users and groups from the named group, thus deleting the whole group. .IP The -o flag causes the named group specification to be written to the standard output. The user"s editor is not invoked. .IP The -i flag causes a group specification to be read from the standard input. The user"s editor is not invoked. The new group specification entirely replaces the previous. .IP All commands that require access granted by "p4 protect" consider a user"s groups when calculating access levels. Groups are also used to calculate a user"s MaxResults. .IP "p4 group" requires superuser access granted by "p4 protect". .TP .B p4 groups [ user ] .IP Displays the list of all groups of users created by the "p4 group" command. If a user argument is given, only groups with that user are displayed. .TP .B p4 have [ file ... ] .IP depot-file#revision - client-file .TP .B p4 help [ command ... ] .IP Print a help message about command. If no command name is given print a general help message about Perforce and give a list of available client commands. .TP .B p4 info .IP Info dumps out what the server knows about the client (the user name, the client name, and the client directory) and some server information (the server"s address, date, version, and license data). .TP .B p4 integrate [ options ] fromFile[revRange] toFile .TP .B p4 integrate [ options ] -b branch [ toFile[revRange] ... ] .TP .B p4 integrate [ options ] -b branch -s fromFile[revRange] [ toFile ... ] .RS .TP options: -c changelist# -d -f -i -n -r -t -v .RE .IP Integrate attempts to propagate changes between two sets of files: from the source files of the branch view to the target files of the branch view. The result is target files that are opened for the action reflecting changes made in the corresponding source files. The actions are either "branch" (for new files), "delete" (when the source file was deleted), or "integrate" (when the source file was changed). In all cases, the opened files must be submitted with "p4 submit" before the integration is reflected in the depot. .IP Files opened for "branch" or "integrate" are left read-only on the client. For "integrate", a subsequent "p4 resolve" command handles the actual merging. If merging takes more than one editing session, "p4 resolve -f" can be used to revisit a merge. In this normal case a later "p4 integrate -r" knows that the results of the merge don"t need to be merged back. .IP You can downgrade a file opened for "integrate" or "branch" to "edit" or "add" and gain write permission by reopening the file with the "p4 edit" command. Downgrading causes any later "p4 integrate -r" to want to merge the changes back into the source file. .IP A branch view may be given directly on the command line by stating the source (from) and target (to) files, or indirectly by naming a stored branch view with -b branch. A stored branch view may have many mappings, while a view on the command line can only have one. If a stored branch view is given, the target files and source files and revisions may be further limited on the command. .IP If no file specification is given then the entire branch view is examined for needed integrations. If a file specification is given, the integration is limited to only those target files. In both cases, the integration is also limited to those target files that are also in the client view. .IP If no revision specification is given then all revisions of the source file are considered for integration. If a single revision is given, then only revisions up to the given revision are included. If a pair of revisions is given (separated by a comma (,)) then only those revisions, inclusively, are integrated. Note that the revision specification concerns the fromFile, but is attached to the toFile. See "p4 help revisions" for help specifying revisions. .IP The -f flag forces integrate to act without regard for previous integration history. Normally, integrate skips any file revisions already integrated. Note: unless revRange is given as well, the -f flag will force "p4 resolve" perform merges without a common base. To avoid this, use -f only to force integration of specific changes. -f implies -i (below). .IP If -c changelist# is given, the files are opened in the numbered pending changelist instead of the "default" changelist. .IP The -d flag enables integrations around deleted revisions. If the target file has been deleted and the source file has changed, -d will re-branch the source file on top of the target file. If the source file has been deleted and the target file has changed, -d will delete the target file. Without -d, it refuses to mix outstanding edits with a deleted file. .IP The -i flag enables baseless merges. When integrating into an existing target file, "p4 integrate" selects which revision "p4 resolve" uses as the base for its merge. That revision should be the revision of the source file just before the first revision being integrated. But if the first revision being integrated is the revision at which the source file was added, which can happen if there were no prior integrations between the source and target files, then "p4 integrate" refuses the baseless merge. The -i flag forces "p4 integrate" to schedule the merge, and "p4 resolve" then uses the first, added revision as the base. .IP The -n flag displays what integrations would be necessary but does not schedule them. .IP The -r flag reverses the mappings in the branch view, with the target files and source files exchanging place. The -b branch flag is required. .IP The -s fromFile[revRange] flag specifies the source (from) file. It is used with the -b branch flag to limit the integrate to just those selected source files. The integration is still limited to any stated target (to) files on the command line. The -s flag also causes the branch view to work bidirectionally, using the union of the mappings and the reversed mappings. When the -s flag is used the source revision range is attached to the source file, rather than to the target files. Yes, this is confusing to code, too. .IP The -t flag makes the source file"s filetype propagate to the target file. Normally, the target file retain its previous filetype. Newly branched files always use the source file"s filetype. The filetype can still be changed before "p4 submit" with "p4 reopen". .IP The -v flag makes "p4 integrate" work faster by not copying newly branched files to the client. In this case, the files can be fetched with "p4 sync" after they are submitted with "submit". [Note that this was the default behavior for newly branched files in release 97.2 and earlier.] .RS .TP Note: the syntax "p4 integrate -b branch toFile[revRange]" is provided for backwards compatibility, but is confusing because it mixes the target file with the source revisions. .RE .TP .B p4 integrated file ... .IP Integrated shows integrations that have already been submitted. Use "p4 resolve -n" to see unresolved integrations and "p4 resolved" to see resolved but unsubmitted integrations. .TP .B p4 job [ -f ] [ jobName ] .TP .B p4 job -d jobName .TP .B p4 job -o [ jobName ] .TP .B p4 job -i [ -f ] .IP "p4 job" creates and edits job specifications using an ASCII form. A job is a defect, enhancement, or other unit of intended work. The "p4 fix" command can associate changelists with jobs. .IP With no arguments, "p4 job" creates a blank job specification form and invokes the user"s editor. When the form is saved, a job name of the form jobNNNNNN is created. If a jobName is given on the command line either that named job will be created or, if the job already exists, the job can be modified. .IP As jobs are entered or updated, all fields are indexed for searching by "p4 jobs". Text fields are broken into individual alphanumeric words (punctuation and whitespace are ignored) and each word is entered, case folded, into the word index. Date fields are converted to an internal representation (seconds since 1970/01/01 00:00:00) and entered into the date index. .IP The fields of a job are defined by the "p4 jobspec" command. There is a simple default jobspec that is used if no explicit one has been defined. .IP The -d flag deletes the named job and any associated fixes. .IP The -o flag causes the named job specification to be written to the standard output. The user"s editor is not invoked. .IP The -i flag causes a job specification to be read from the standard input. The user"s editor is not invoked. .IP The -f flag allows otherwise read-only fields to be set. .TP .B p4 jobs [ -e jobview -i -l -m max -r ] [ file[revRange] ... ] .TP .B p4 jobs -R .IP Reports the list of all jobs currently known to the system. If a file (pattern) is given, only fixes for submitted changelists affecting that file (or set of files) are listed. The file pattern may include wildcards and/or a revision number range. See "p4 help revisions" for help specifying revisions. .IP The -e jobview limits the output to jobs satisfying the expression given as "jobview". See "p4 help jobview" for a description of jobview syntax. .IP The -i flag also includes any fixes made by changelists integrated into the specified files. .IP The -l flag produces long output with the full text of the job descriptions. .IP The -m max flag limits the output to the first "max" jobs, ordered by their job name. .IP The -r flag sorts the jobs in reverse order (by job name). .IP The -R flag rebuilds the jobs table and reindexes each job; this is necessary after upgrading to 98.2. "p4 jobs -R" requires superuser access granted by "p4 protect". .TP .B p4 jobspec .TP .B p4 jobspec -o .TP .B p4 jobspec -i .IP Jobspec edits the template that specifies the format of jobs. This format is used by "p4 job" when jobs are entered or updated, and by "p4 jobs" and "p4 describe" when jobs are displayed. .IP Jobspec brings up a form with the following fields: .RS .TP Fields: A list of the fields maintained for each job, one line per field. Each line has five words: code, name, data-type, len, and field-type. .RE "code" is a unique integer identifier for storing the data of the field. Job codes must be between 101 and 199. "name" is the name of the field for the job. "data-type" indicates the format of the field: .IP word: a single word (any value) date: a date/time field select: one of a set of words line: a one-liner text: a block of text "len" is the recommended character length of a display box for the field. If 0, a text box is assumed. "field-type" indicates how to handle the setting of the field: .IP optional: no default, and not required to be present default: default provided, still not required required: default provided, value must be present once: set once to the default and never changed always: always reset to the default upon saving .RS .TP Values: A list of "select" fields and the values those fields can have. Each line has two words: the field name and the values list, with individual values separated by "/" (no spaces). .RE .RS .TP Presets: A list of fields and their default values, for fields whose "setting" flag is other than "optional". Each line has two words: the field name and the default value. If the value has spaces, it must be enclosed in double quotes. The following special defaults are recognized: .RE .IP $user: the user entering the job $now: the current date $blank: the words "<enter description here>" .RS .TP Comments: textual comments to be included at the top of each job specification, to help the user fill out the form. Each line must begin with the comment character "#". .RE .IP Certain field codes have special significance: .IP code 101, required: the job name code 102, optional: the job status code 103, optional: the user who created the job code 104, optional: the date the job was created code 105, optional: the description .IP If there is a job status field (102), "p4 submit" and "p4 fix" will set it to "closed" for any jobs being fixed by the change. .IP Fields 102-105 are used by "p4 describe" and "p4 jobs" to display a job summary. Any missing fields simply will not appear in the summary line. .IP If field 105 is present, it is assumed to be a description, which is used by "p4 change" and "p4 submit" to annotate the list of jobs to be fixed by the change being created. .IP When updating the jobspec after jobs have been entered, certain limitations apply: .IP Data is stored according to its code. Fields can be renamed by keeping the same code. Removing a code can abandon the associated data stored for the code. .IP Changing the definition of a code (e.g. from "text" to "word") can require users to bring jobs into the new format as they are edited. .IP The -o flag causes the job template to be written to the standard output. The user"s editor is not invoked. .IP The -i flag causes a job template to be read from the standard input. The user"s editor is not invoked. .IP "p4 jobspec" requires superuser access granted by "p4 protect". .TP .B p4 label [ -f -t template ] name .TP .B p4 label -d [ -f ] name .TP .B p4 label -o [ -t template ] name .TP .B p4 label -i [ -f ] .IP Create a new label specification or edit an existing label specification. A name is required. The specification form is put into a temporary file and the editor (given by the environment variable $P4EDITOR) is invoked. .IP The label specification form contains the following fields: .RS .TP Label: The label name (read only.) .RE .RS .TP Owner: The user who created this label. Can be changed. .RE .RS .TP Update: The date this specification was last modified. .RE .RS .TP Access: The date of the last "labelsync" or use of "@label" on this label. .RE .RS .TP Description: A short description of the label (optional). .RE .RS .TP Options: Flags to change the label behavior. .RE .RS .RS .TP locked Allows only the label owner to change its specification. Prevents the label from being deleted. Prohibits "p4 labelsync". .RE .RE .RS .TP View: A mapping to select files from the depot. The default view selects all depot files. .RE .IP A label definition is used only by the "p4 labelsync" command. Only the owner of a label may run labelsync on that label. A label that has its Options: set to "locked" cannot be updated. .IP Flag -d causes the named label to be deleted, as long as it is not locked. The -f flag forces the delete. .IP The -o flag causes the named label specification to be written to the standard output. The user"s editor is not invoked. .IP The -i flag causes a label specification to be read from the standard input. The user"s editor is not invoked. .IP The -t flag constructs the label"s view by copying the named template label"s view, instead of using the existing view or creating a new default view. .IP The -f flag allows the superuser to delete any label; normally locked labels can only be deleted by their owner. -f also allows the last modified date to be set. .TP .B p4 labels [ file[revrange] ] .IP Reports the list of all labels currently known to the system. .IP If files are specified, "p4 labels" limits its report to labels that contain those files. If the file specification includes a revision range, "p4 labels" limits its report to labels that contain those particular revisions. See "p4 help revisions" for help specify revisions. .TP .B p4 labelsync [ -a -d -n ] -l label [ file[revRange] ... ] .IP Labelsync causes the named label to reflect the current contents of the client. It records the last revision of each file taken onto the client. The label"s name can subsequently be used in a revision specification as @label to refer to the revision of a file as stored in the label. .IP Without a file argument, labelsync causes the label to reflect the contents of the whole client, by adding, deleting, and updating the label. If a file is given, labelsync updates only that named file. .IP If the file argument includes a revision specification, then that revision is used instead of the revision taken by the client. See "p4 help revisions" for help specifying revisions. .IP If the file argument includes a revision range specification, then only files selected by the revision range are updated, and the highest revision in the range is used. .IP The -a flag causes labelsync to add the named file to the label; no files will be deleted from the label. .IP The -d deletes the named file from the label, regardless of revision. .IP The -n flag lists how the label would be affected, but doesn"t actually update the label. .IP Only the owner of a label may run labelsync on that label. A label that has its Options: set to "locked" cannot be updated. .TP .B p4 lock [ -c changelist# ] [ file ... ] .IP The open files named are locked in the depot, preventing any user other than the current user on the current client from submitting changes to the files. If a file is already locked then the lock request is rejected. If no file names are given then lock all files currently open in the changelist number given or in the "default" changelist if no changelist number is given. .TP .B p4 logger [ -c sequence# ] [ -t counter ] .IP Dumps the event log, which notes updates to changes and jobs, for use with defect tracking integration. The event log is enabled by setting the counter "logger" (to 0) with "p4 counter". Each event has a sequence number. The presence of an entry in the log doesn"t guarantee that the named entity has changed. .IP If a sequence# is given with -c, only events since that number are listed. If a counter is given with -t, only events since the number of that counter are listed. If both are given, then the counter is updated to the sequence number and nothing is output. If the update brings the counter to the highest sequence number in the log, the log is cleared. This generally means that only one user can really make use of this option. .IP "p4 logger" is not meant as an end-user command. It exists to support propagating information to an external defect tracking system. .IP "p4 logger -c" requires "review" access granted by "p4 protect". .TP .B p4 obliterate [ -y -z ] file[revRange] ... .IP Obliterate removes files and their history from the server in a way that they won"t come back. (See "p4 delete" for the non- destructive way to delete a file.) It retrieves space used by those files in the archive and then clears the files from all lists maintained by the server. Files in client workspaces are not affected, except that Perforce will no longer recognize them as being under its control. .IP Obliterate carefully undoes the lazy copies made when "p4 integrate" creates a branch. Because of this, it is possible that obliterating files will not recover any space. .IP If the file argument has a revision, then only that revision is obliterated. If the file argument has a revision range, then only the revisions in that range are obliterated. See "p4 help revisions" for help. .IP The -y flag instruct obliterate to do its work. Otherwise, it just displays what it would do. .IP The -z flag restricts obliterate to undoing lazy copies. It does not actually remove any files or metadata, but creates physical copies of previously lazy copies, and as such, is likely to increase space use on the server. Use this on the source files to ensure that in the database no other files refer to the named files. .IP "p4 obliterate" requires superuser access granted by "p4 protect". .TP .B p4 opened [ -a -c changelist# ] [ file ... ] .IP Shows files currently opened for pending changelists or indicates for the specified individual files whether they are currently opened. If no file names are given, all files open on the current client are listed. .IP The -a flag lists opened files in all clients. Normally only files opened by the current client are listed. .IP The -c changelist# flag restricts the list to files opened under the given changelist#. Normally files in any changelist (include the "default") are listed. .TP .B p4 passwd [ -O oldPassword -P newPassword ] [ user ] .IP "p4 passwd" sets the user"s password on the server. .IP Once a password is set for a user on the server, then in order for that user to invoke any Perforce client commands the same password must be set on the client in the environment variable $P4PASSWD. (On Windows, "p4 passwd" sets this as well.) .IP "p4 passwd" prompts for both the old password and the new password with character echoing turned off. Setting the password to an empty string deletes the password. .IP The -O flag provides the old password, avoiding prompting. .IP The -P flag provides the new password, avoiding prompting. .IP Setting the password of someone other than the current user requires superuser access granted by "p4 protect". In this case "p4 passwd" does not prompt for the old password. .TP .B p4 print [ -o localFile -q ] file[revRange] ... .IP Retrieve the contents of a depot file to the client"s standard output. The client"s have list is not affected. If file is specified as a client file name, the client view is used to find the corresponding depot file. .IP If the file argument has a revision, then all files as of that revision are printed. If the file argument has a revision range, then only files selected by that revision range are printed, and the highest revision in the range is used for each file. Normally, the head revision is printed. See "p4 help revisions" for help specifying revisions. .IP The -o localFile flag redirects the output to the named file on the client filesystem. In this case, at most one file is written. .IP The -q flag suppresses the initial line that displays the file name and revision. .TP .B p4 protect .TP .B p4 protect -o .TP .B p4 protect -i .IP "p4 protect" edits the protections table using an ASCII form. Once protections are in place, only a user with superuser access may use the "p4 protect" command. .IP Each line contains a protection mode, a group/user indicator, the group/user name, client host id and a depot file path pattern. A user gets the highest privilege granted on any line. .RS .TP Note: remote depot accesses are made using the pseudo-user "remote"; access by other servers can be controlled by granting appropriate permissions to the "remote" user. .RE .RS .TP Mode: The permission being granted. Each permission includes all the permissions above it, except for "review". .RE list - users can see names but not contents of files; users can see all non-file related metadata (clients, users, changelists, jobs, etc.) read - users can sync, diff, and print files open - users can add, edit, delete, and integrate files write - users can submit open files super - allows access to the "p4 protect" command review - allows access to the "p4 review" command; implies read access .IP Group/User indicator: either "group" or "user". .RS .TP Name: A Perforce group or user name; may be wildcarded. .RE .RS .TP Host: The IP address of a client host; may be wildcarded. .RE .RS .TP Path: The part of the depot being granted access. .RE .IP The -o flag causes the protection table to be written to the standard output. The user"s editor is not invoked. .IP The -i flag causes the protection table to be read from the standard input. The user"s editor is not invoked. .TP .B p4 integrate from to .TP .B p4 delete from .TP .B p4 submit .IP Perforce does not support a single "rename" command, but files can be renamed by branching one file into another and then deleting the original file. .IP The "from" and "to" file arguments may include wildcards as long as they are matched. .IP Integrating from files require read access to the files, but deleting them requires write access. .IP For further information, see the help for the individual commands. .TP .B p4 reopen [ -c changelist# ] [ -t filetype ] file ... .IP Reopen takes an already opened file and reopens it for the current user, optionally changing its changelist or filetype. .IP The changelist must have previously been created with "p4 change" or may be the "default" changelist. .IP See "p4 help filetypes" for a list of types. .TP .B p4 resolve [ -af -am -as -at -ay -f -n -t -v ] [ file ... ] .IP Resolve handles file integrations through an interactive dialog. If no file is named all open files requiring integration will be acted upon. .IP Perforce detects the occurrence of parallel changes, requiring a merger of changes and resolution of potential conflicts. Resolution may be either textual or non-textual. Textual resolution occurs when there are parallel edits to related text files. In this case it may be possible to comingle edits meaningfully. Non-textual resolution occurs when at least one of the related files is binary, or the change actions themselves are incompatible, such as when one file has been deleted while the other file has been edited. .IP For textual resolution you are provided with a file containing a merger of your changes in the working file on the client ("yours") with the parallel changes that have been made in the depot ("theirs"), based on a common original ancestor revision of the two parallel versions ("base"). .IP The display presents a count of change sections of the merged text according to whether they are: .IP yours change is only in your working revision (no conflict) theirs change is only in the depot revision (no conflict) both same text added or changed in both (no conflict) conflicting conflicting changes between the yours and theirs .IP If the count for "conflicts" is non-zero then the merged version will contain integration marks bracketing alternative changes at places in the text where conflicts occur. You must edit the file to resolve the conflict and remove the integration marks. .IP For non-textual resolution no merge file is created and you are given the choice of choosing "yours" or "theirs". .IP Choices for action include: .RS .TP Accept: at Keep only changes to their file. ay Keep only changes to your file. * am Keep merged file. * a Keep autoselected file. .RE .RS .TP Diff: * dt See their changes alone. * dy See your changes alone. * dm See merged changes. d Diff your file against merged file. .RE .RS .TP Edit: et Edit their file (read only). ey Edit your file (read/write). * e Edit merged file (read/write). .RE .RS .TP Misc: * m Run "$P4MERGE base theirs yours merged". s Skip this file. h Print this help message. ^C Quit the resolve operation. .RE .IP Options marked (*) appear only for textual resolution. .IP Any form of Accept marks the resolution complete (to the users satisfaction). Skip leaves the integration marked unresolved allowing you to return to it at a later time. .IP The Merge option allows you to invoke your own integration and conflict resolution utility (named in the $P4MERGE environment variable). This utility is expected to replace the existing merged file with a new one. .IP The -am flag puts "p4 resolve" into automatic mode: if there are conflicts, the file is skipped; if there are no conflicts and yours hasn"t changed it accepts theirs; if theirs hasn"t changed it accepts yours; if both yours and theirs have changed it accepts the merge. Files that have no base for merging (e.g. binary files) are always skipped. .IP The -af flag forces "p4 resolve" in automatic mode to accept the merged file even if there are conflicts. .IP The -as flag performs a "safe" automatic resolve, accepting only files that have either your changes or their changes, but not both. Files with changes to both yours and theirs are skipped. .IP The -at and -ay flags perform an automatic resolve that skips the merging. Instead it automatically accepts their (-at) or your (-ay) version of the file. The -at flag should be used with care, as it overwrites any changes made to the file in the client workspace. .IP The -f flag allows previously resolved files to be resolved again. Normally, once files have been resolved then "p4 resolve" won"t display them again. This is the proper way to re-edit files if the results of an initial "p4 resolve" are not satisfactory. .IP The -n flag lists the integrations which would be performed without actually putting the user into the resolution dialog. .IP The -t flag forces "p4 resolve" to attempt a textual merge, even for files with non-text (binary) types. .IP The -v flag causes "p4 resolve" to put in markers for all changes, not just those in conflict. The markers must be edited out before the merged file can be accepted. .TP .B p4 resolved [ file ... ] .IP Resolved shows integrations that have already been resolved but not yet submitted. Use "p4 resolve -n" to see unresolved integrations and "p4 integrated" to see already submitted integrations. .TP .B p4 revert [ -a -c changelist# ] file ... .IP Revert an open file back to the revision previously synced from the depot, discarding any pending changelists or integrations that have been made. This command requires naming files explicitly. After running revert the named files will no longer be locked or open. .IP The -a flag tells "p4 revert" to revert only those files which are opened for edit or integrate and are unchanged or missing. Files with pending integration records are left open. With the -a flag, the file arguments are optional. .IP The -c flag limits "p4 revert" to files opened under the given, pending changelist. .TP .B p4 review [ -c changelist# ] [ -t counter ] .IP "p4 review" lists changelists that have not been reviewed before, as tracked by the named counter. If the counter is not given, "p4 review" lists all changelists. (If a changelist# and counter are given, "p4 review" sets the counter to that changelist# and produces no output. This functionality has been superceded by the "p4 counter" command.) .IP "p4 review" is not meant as an end-user command. It exists to support an automated change review daemon. .TP .B p4 reviews [ -c changelist# ] [ file ... ] .IP "p4 reviews" lists all users who have subscribed to review the named files, the files in the numbered changelist, or all files by default. Users subscribe to review files via the "p4 user" command. .TP .B p4 set [ -s -S service ] [ var=[value] ] .IP "p4 set" sets the registry variables used by Perforce on Windows platforms. Normally, the variable "var" is set to "value". If "value" is missing, the variable "var" is unset. Without any arguments at all, "p4 set" list variable settings. .IP The -s flag causes "p4 set" to set variables for the whole system rather than for the user. You must have NT administrator powers to use this. .IP The -S service flag causes "p4 set" to set variables for the named service. You must have NT administrator powers to use this. .IP Currently, registry variable entries may be overridden by environment variables and (in some cases) flags on the command line. See "p4 help environment" for a list of environment/registry variables. .TP .B p4 submit [ -s ] .TP .B p4 submit [ -s ] files .TP .B p4 submit -c changelist# .TP .B p4 submit -i [ -s ] .IP "p4 submit" commits a pending changelist and its files to the depot. .IP With no argument "p4 submit" attempts to submit all files in the "default" changelist. Submit provides the user with a dialog similar to "p4 change" so the user can compose a changelist description. In this dialog the user is presented with the list of files open in changelist "default". Files may be deleted from this list but they cannot be added. (Use an open command (edit, add, delete) to add additional files to a changelist.) .IP If a (single) file pattern is given, only those files in the "default" changelist that match the pattern will be submitted. .IP The -c flag submits the numbered pending changelist that has been previously created with "p4 change" or a failed "p4 submit". .IP The -i flag causes a changelist specification (including files to be submitted) to be read from the standard input. The user"s editor is not invoked. .IP The -s flag extends the list of jobs to include the fix status for each job, which becomes the job"s status when the changelist is committed. See "p4 help change" for more notes on this option. .IP Before committing a changelist submit locks all associated files not already locked. If any file cannot be locked, or if the submit fails for any other reason the files are left open in a newly created pending changelist. .IP Submit is guaranteed to be atomic. Either all files will be updated in the depot as a unit or none will be. .TP .B p4 sync [ -f -n ] [ file[revRange] ... ] .IP Sync updates the client workspace to reflect its current view (if it has changed) and the current contents of the depot (if it has changed). The client view is used to map client file names to depot file names and vice versa. .IP Sync adds files that are in the client view but which have not been retrieved before. Sync deletes previously retrieved files which are no longer in the client view or have been deleted from the depot. Sync updates files which are still in the client view and which have been updated in the depot. .IP Normally, sync affects all files in the client workspace. If file arguments are given, sync limits its operation to those files. The file arguments may contain wildcards. .IP If the file argument includes a revision specifier, then the given revision is retrieved. Normally, the head revision is retrieved. See "p4 help revisions" for help specifying revisions. .IP If the file argument includes a revision range specification, then only files selected by the revision range are updated, and the highest revision in the range is used. .IP Normally, sync will not clobber files in the client workspace that the user has made writable. Setting the "clobber" option in the client spec disables this safety check. .IP The -f flag forces resynchronization even if the client already has the file, and clobbers writable files. This flag doesn"t affect open files. .IP The -n flag causes sync not to update the client workspace, but to display what normally would be updated. .TP .B p4 triggers .TP .B p4 triggers -o .TP .B p4 triggers -i .IP "p4 triggers" edits the table of pre-submit triggers. .IP Triggers are user-defined commands that are run on the server during changelist submission to validate the changelist. The commands are run on the server after the changelist is created and the files are locked but before any files are transferred. Thus triggers cannot validate the contents of files being submitted. .IP The trigger form has a single entry "Triggers", followed by any number of trigger lines. Triggers are executed in the order listed and if a trigger fails subsequent triggers are not run. A trigger succeeds if the command executed exits 0 and fails otherwise. If it fails, the command"s standard output (not error output) is used as the text of the trigger failure error message. .IP Each trigger line contains a trigger name, a depot file path pattern, and a command to run: .RS .TP Name: The name of the trigger. A run of the same trigger name on contiguous lines is treated as a single trigger, so that multiple paths may be specified. Only the command of the first such trigger line is used. .RE .RS .TP Path: Files which will cause the trigger to be run. This is a file pattern and may be an exclusion mapping (-pattern) to exclude files. .RE .RS .TP Command: The command to run to validate the changelist. If the command contains spaces, the whole command must be quoted. The following variables are expanded in the command string: .RE .IP %changelist% -- the changelist being submitted %client% -- the client submitting the changelist %clienthost% -- the hostname of the client %clientip% -- the IP address of the client %serverhost% -- the hostname of the server %serverip% -- the IP address of the server %serverport% -- the IP address:port of the server %serverroot% -- the value of the server"s $P4ROOT %user% -- the user submitting the changelist More information can be gathered about the changelist being submitted by running "p4 describe %changelist%". .IP The -o flag causes the trigger table to be written to the standard output. The user"s editor is not invoked. .IP The -i flag causes the trigger table to be read from the standard input. The user"s editor is not invoked. .IP "p4 triggers" requires superuser access granted by "p4 protect". .TP .B p4 typemap .TP .B p4 typemap -o .TP .B p4 typemap -i .IP "p4 typemap" edits a name-to-type mapping table for "p4 add", which consults the table to select a file"s filetype based on its name. .IP The typemap form has a single entry "TypeMap", followed by any number of typemap lines. Each typemap line contains a filetype and a depot file path pattern: .RS .TP Filetype: See "p4 help filetypes" for a list of valid filetypes. .RE .RS .TP Path: Names to be mapped to the filetype. This is a file pattern and may be an exclusion mapping (-pattern) to exclude files. Note to match all files anywhere in the depot hierarchy, the pattern must begin with //..., and to match any file with a given suffix you must either specify "//.../*.suffix" or "//....suffix" (four dots). .RE .IP As with all mappings, later entries override earlier entries. If no matching entry is found in the table, "p4 add" senses the file"s filetype by examining the file"s contents and execution permission bits. .IP The -o flag causes the typemap table to be written to the standard output. The user"s editor is not invoked. .IP The -i flag causes the typemap table to be read from the standard input. The user"s editor is not invoked. .IP "p4 typemap" requires superuser access granted by "p4 protect". .TP .B p4 unlock [ -c changelist# ] [ file ... ] .IP "p4 unlock" releases a lock on an open file in a pending changelist. If the file is open in a specific pending changelist other than "default", then the -c flag is required to specify the pending changelist. If no file name is given then all files in the designated changelist are unlocked. .TP .B p4 user [ -f ] [ name ] .TP .B p4 user -d [ -f ] name .TP .B p4 user -o [ name ] .TP .B p4 user -i [ -f ] .IP Create a new user specification or edit an existing user specification. The specification form is put into a temporary file and the editor (given by the environment variable $P4EDITOR) is invoked. .IP Normally, a user specification is created automatically the first time the user invokes any client command that can update the depot. The "p4 user" command is generally used to edit the user"s reviewing subscription list for change review. .IP The user specification form contains the following fields: .RS .TP User: The user name (read only). .RE .RS .TP Email: The user"s email address (user@client default). .RE .RS .TP Update: The date the specification was last modified (read only). .RE .RS .TP Access: The date the user last issued a client command. .RE .IP FullName: The user"s real name. .IP JobView: Selects jobs to be presented at changelist creation. These are the jobs that can be closed automatically upon changelist submission. See "p4 help jobview" for a description of jobview syntax. .RS .TP Reviews: The subscription list for change review. You may use wildcards: ... matches any characters including / * matches any character except / There may be any number of review lines. .RE .RS .TP Password: The user"s password. See also "p4 help passwd". .RE .IP The -d flag deletes the named user, but only if the user is not the owner of any branches, clients, jobs, labels, or opened files. .IP The -o flag causes the named user specification to be written to the standard output. The user"s editor is not invoked. .IP The -i flag causes a user specification to be read from the standard input. The user"s editor is not invoked. .IP The -f flag allows the superuser to delete or modify any user; normally users can only be deleted or modified by themselves. -f also allows the last modified date to be set. .TP .B p4 users [ user ... ] .IP Reports the list of all users, or those users matching the argument, currently known to the system. The report includes the last time each user accessed the system. .TP .B p4 verify [ -q -u -v ] file[revRange] ... .IP "p4 verify" reports for each revision of the named files the revision specific information and an MD5 digest (fingerprint) of the revision"s contents. See "p4 help revisions" for help specifying revisions. .IP By default, "p4 verify" computes and displays the digest of each revision. If a revision cannot be reproduced (e.g. if the file is missing from the archive), the revision"s output line ends with MISSING! If there is a saved digest, "p4 verify" compares it with the computed one. If they differ the output line ends with BAD! .IP The -u flag causes "p4 verify" to compute and save the digest for each revision that has no saved digest. Revisions already with saved digests are skipped. .IP The -v flag forces "p4 verify" to compute and save the digest for each revision, even if it already has a saved digest. This can be used to update the saved digest if the archive was changed deliberately. .IP The -q flag instructs "p4 verify" to operate quietly. The only output would be errors from mismatched digests or errors due to unreproducible revisions. .IP The following commands will compute digests for revisions without saved digests and then verify the first and head revisions of all files. Verifying revision #1 is useful for text files because of their reverse delta storage format: corruption of any revision will be reflected in revision #1. .RS .RS .TP p4 verify -qu //... .RE .RE .RS .RS .TP p4 verify -q #1,#1 .RE .RE .RS .RS .TP p4 verify -q #head,#head .RE .RE .IP Saved digests are also used by "p4 diff" to avoid having to compute them each time. .IP "p4 verify" requires superuser access granted by "p4 protect". .TP .B p4 where [ file ... ] .IP Where shows how the named files map through the client view. For each argument, three names are produced: the name in the depot, the name on the client in Perforce syntax, and the name on the client in local syntax. .IP If no file is given, the mapping for "..." (all files in the current directory and below) is shown. .IP Note that "p4 where" does not determine where any real files are. It only computes where they should be according to the client view.