| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Chapter 6 Perforce Basics: Miscellaneous Topics | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
The manual thus far has provided an introduction to the basic functionality provided by Perforce, and subsequent chapters cover the more advanced features. In between are a host of other, smaller facilities; this chapter covers these topics. Included here is information on the following:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Reconfiguring the Perforce Environment with $P4CONFIG | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Some Perforce users have multiple client workspaces, each of which may connect to a different port. There are three ways of changing your Perforce environment on the fly:
Each variable setting in the file stands alone on a line and must be in the form Values that can be stored in the P4CONFIG file are:
Ed has two workspaces that he often switches between. The first workspace is elmproj; it
has a client root of /usr/edk/elm, and connects to the Perforce server at ida:1818.
The second workspace is called graphicwork; its client root is
/usr/edk/other/graphics, and it uses the Perforce server at warhol:1666. Ed
gives the P4CONFIG environment variable the value .p4settings. He creates a file
called .p4settings in /usr/edk/elm; the file contains this text:
| P4CLIENT=elmprojP4PORT=ida:1818 He creates a second .p4settings file in /usr/edk/other/graphics; it contains
P4PORT=warhol:1666 He always works within the directories his files are located in; when he is anywhere beneath /usr/edk/other/graphics, his Perforce client will be graphicwork, and when he's underneath /usr/edk/elmproj, his client is elmproj. The values found in the file specified by P4CONFIG will override any environment or registry variables that have been set. Command-line flags (discussed in the next section) will override the values found in the P4CONFIG file. P4CONFIG automates the process of changing the Perforce environment variables; new settings take effect whenever you switch your current working directory from one client workspace directory to another. If you use multiple client workspaces, this is a very useful feature.
| Perforce Passwords
By default, any user can assume the identity of any other Perforce user by setting the value of P4USER to a different username, by using the -u flag with the p4 command, or by setting the value of P4USER configuration within the file described by P4CONFIG. Although this makes it easy to perform tasks for other users when necessary, it can also lead to security problems.
|
To prevent another user from impersonating you within Perforce, use the p4 user command and set the form's Password: field to a string. Only whitespace and the # character may not be used. (For security's sake, it is best to set the password from a p4 client located on the same machine as the p4d server). No one, including the user who set the password, will be able to use any p4 command without providing the password to Perforce. You can provide this password to Perforce in one of three ways:
|
Be careful! Once a user's Perforce password has been set in the p4 user form, there is no way for that user to use Perforce if they forget their password and the value of P4PASSWD has not been properly set. If this happens, the Perforce superuser will have to reset or remove the password.
| Command-Line Flags Common to All Perforce Commands
Six flags are available for use with all Perforce commands. These flags are given between the system command p4 and the command argument taken by p4. These flags are: |
All Perforce commands can take these flags, even commands for which these flag usages are clearly useless; e.g. p4 -u bill -d /usr/joe help. Other flags are available as well; these additional flags are command dependent. Please consult the Command Reference or use p4 help commandname to find the flags defined for each command.
| Working Detached
Under normal circumstances, users work in their client workspace with a functioning network connection to a Perforce server. As they edit files, they are supposed to announce their intentions to the server with p4 edit, and the server responds by noting the edit in the depot's metadata, and by unlocking the file in the client workspace. However, it is not always possible for a network connection to be present; a method is needed for users to work entirely detached from the server
|
Finding Changed Files with `p4 diff'The p4 diff reporting command is used to compare a file in the client workspace with the corresponding file in the depot. Its behavior can be modified with two flags:
| Using `p4 diff' to Update the DepotThe p4 diff variations described above can be used in combination with the -x flag to bring the state of the depot in sync with the changes made to the client workspace.To open changed files for edit after working detached, use
To delete files from the depot that were removed from the client workspace, use
As always, these edit and delete requests are stored in a changelist, which is not processed until the p4 submit command is given.
|
| Refreshing files
The process of syncing a depot with a formerly-detached client workspace has a converse: it is possible for Perforce to become confused about the contents of a client workspace through the accidental use of the local OS deletion command. For example, suppose that you accidently delete a client workspace file via the UNIX rm command, and that the file is one that you wanted to keep. Even after a submit, p4 have will still list the file as being present in the workspace.
| Just as the process described above will bring the depot in sync with the client workspace, p4 sync -f files can be used to bring the client workspace in sync with the files the depot thinks you have. This command is mostly a recovery tool for bringing the client workspace back into sync with the depot after accidentally removing or damaging files managed by Perforce.
| Recommendations for Organizing the Depot
The default view brought up by p4 client maps the entire depot to the entire client workspace. If the client workspace is named eds_elm, the default view would look like this:
| This is the easiest mapping, and can be used for the most simple Perforce depots, but mapping the entire depot to the workspace can lead to problems later on. Suppose your server currently stores files for only one project, but another project is added later: everyone who has a client workspace mapped as above will wind up receiving all the files from both projects into their workspaces. Additionally, the default view does not facilitate branch creation.
The safest way to organize the depot, even from the start, is to create one subdirectory per project within the depot. For example, if your company is working on three projects, codenamed foo, bar, and zeus, three subtrees might be created within the depot: //depot/foo, //depot/bar, and //depot/zeus. If Joe is working on the foo project, his mapping might look like this:
| And Sarah, who's working on the bar and zeus projects, might set up her client workspace as:
This sort of organization can be extended on the fly to as many projects and branches as are needed. Another way of solving the same problem would be to have the Perforce system administrator create one depot for each project or branch. Please see Chapter 16 for details.
| Renaming Files
Although Perforce doesn't have a rename command, a file can be renamed by using p4 integrate to copy the file from one location in the depot to another, deleting the file from the original location, and then submitting the changelist that includes the integrate and the delete. The process is as follows: |
The from_file will be moved to the directory and renamed according to the to_file specifier. For example, if from_file is d1/foo and to_file is d2/bar, then foo will be moved to the d2 directory, and will be renamed bar. The from_file and to_file specifiers may include wildcards, as long as they are matched on both sides. Perforce write access is needed on all the specified files.
|
| Reading Forms from Standard Input; Writing Forms to Standard Output
Any commands that require the user to fill in a form, such as the p4 client and p4 submit commands, can read the form from standard input with the -i flag. An example is
| where filename contains the field names and values expected by the form. Similarly, the -o flag can be used to write a form specification to standard output. The commands that display forms and can therefore use these flags are:
* p4 submit can take the -i flag, but not the -o flag.
|
Please send comments and questions about this manual to
[email protected]. |
Copyright 1997, 1998 Perforce Software. All rights reserved. Last updated: 08/10/98 |