diff options
author | Andy Bailey <GooseYArd@gmail.com> | 2010-06-13 14:51:07 -0500 |
---|---|---|
committer | Robby Workman <rworkman@slackbuilds.org> | 2010-06-13 14:51:07 -0500 |
commit | feb4d19f4b32538bc0c27d6af7a7bdf9effe5a9e (patch) | |
tree | 6a6e4a8e42e4fcbb778636cdb9d7727c3e6f9d15 /development/p4 | |
parent | 4b33e185932c6ed665cf0e5863cc46fe77068df6 (diff) |
development/p4: Added (cli client for Perforce)
Signed-off-by: Robby Workman <rworkman@slackbuilds.org>
Diffstat (limited to 'development/p4')
-rw-r--r-- | development/p4/README | 6 | ||||
-rw-r--r-- | development/p4/p4.SlackBuild | 42 | ||||
-rw-r--r-- | development/p4/p4.info | 10 | ||||
-rw-r--r-- | development/p4/p4.man | 2254 | ||||
-rw-r--r-- | development/p4/slack-desc | 19 |
5 files changed, 2331 insertions, 0 deletions
diff --git a/development/p4/README b/development/p4/README new file mode 100644 index 0000000000000..4261643a57a4a --- /dev/null +++ b/development/p4/README @@ -0,0 +1,6 @@ +This is the command line client for the Perforce change control system. + +For a graphical Perforce client, see the "p4v" Slackbuild. + +For an excellent introduction to Perforce, check out: +http://www.perforce.com/perforce/doc.092/manuals/intro/index.html diff --git a/development/p4/p4.SlackBuild b/development/p4/p4.SlackBuild new file mode 100644 index 0000000000000..7023dac8a2784 --- /dev/null +++ b/development/p4/p4.SlackBuild @@ -0,0 +1,42 @@ +#!/bin/sh + +# Slackware build script for p4 +# Manpage from: http://www.perforce.com/perforce/doc.052/man/p4.1 +# Written by Andy Bailey <bailey@akamai.com + +PRGNAM=p4 +VERSION=${VERSION:-r0.92} +BUILD=${BUILD:-1} +TAG=${TAG:-_SBo} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) ARCH=i486 ;; + arm*) ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) ARCH=$( uname -m ) ;; + esac +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp/SBo} +PKG=$TMP/package-$PRGNAM +OUTPUT=${OUTPUT:-/tmp} + +set -e + +mkdir -p $TMP $PKG $OUTPUT +mkdir -p $PKG/usr/bin $PKG/usr/man/man1 +cp $CWD/p4 $PKG/usr/bin +gzip -9 -c < $CWD/p4.man > $PKG/usr/man/man1/p4.1.gz + +chown root:root $PKG/usr/bin/p4 $PKG/usr/man/man1/p4.1.gz +chmod 0755 $PKG/usr/bin/p4 +chmod 0644 $PKG/usr/man/man1/p4.1.gz + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz} diff --git a/development/p4/p4.info b/development/p4/p4.info new file mode 100644 index 0000000000000..1667608d0f3c1 --- /dev/null +++ b/development/p4/p4.info @@ -0,0 +1,10 @@ +PRGNAM="p4" +VERSION="r09.2" +HOMEPAGE="http://www.perforce.com/" +DOWNLOAD="http://www.perforce.com/downloads/perforce/r09.2/bin.linux26x86/p4" +MD5SUM="5e687ee9f0dc520af5a129c46e26d156" +DOWNLOAD_x86_64="http://www.perforce.com/downloads/perforce/r09.2/bin.linux26x86/p4" +MD5SUM_x86_64="f6a13e7b59b3e1814a19e9c2bf4bde36" +MAINTAINER="Andy Bailey" +EMAIL="GooseYArd@gmail.com" +APPROVED="rworkman" diff --git a/development/p4/p4.man b/development/p4/p4.man new file mode 100644 index 0000000000000..842165a697ef7 --- /dev/null +++ b/development/p4/p4.man @@ -0,0 +1,2254 @@ +.\" 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. diff --git a/development/p4/slack-desc b/development/p4/slack-desc new file mode 100644 index 0000000000000..77c97ac0db3b4 --- /dev/null +++ b/development/p4/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler---------------------------------------------------| +p4: p4 (Perforce source management system client) +p4: +p4: p4 is the client interface for the Perforce source management +p4: system. p4 connects to the server daemon, p4d, which manages +p4: access to the central respository, or depot. +p4: +p4: Homepage: http://www.perforce.com/ +p4: +p4: +p4: +p4: |