Perforce 2000.1 Command Line User's Guide (2000.1.ug.3) | ||
<< Previous Chapter Perforce Basics: Miscellaneous Topics |
Table of Contents Index Perforce on the Web |
Next Chapter >> Labels |
When a changelist is submitted to the depot, the depot is updated atomically: either all of the files in the changelist are updated in the depot, or none of them are. This grouping of files as a single unit guarantees that code alterations spanning multiple files will update in the depot simultaneously. To reflect the atomic nature of changelist submissions, submission of a changelist is sometimes called an atomic change transaction.
Perforce attempts to make changelist usage as transparent as possible: in the normal case, Perforce commands such as p4 edit add the affected files to a default changelist (called, appropriately enough, the default changelist), and p4 submit sends the default changelist to the server for processing. However, there are two sets of circumstances that would require the user to understand and manipulate non-default changelists:
Each of the files in the changelist are said to be open within the client workspace: the first of the files above was opened for edit with p4 edit, and the second was opened for deletion with p4 delete. The files in the changelist are updated within the depot with p4 submit, which sends the changelist to the server; the server processes the files contained in the changelist and alters the depot accordingly.
The commands that add or remove files from changelists are:
By default, these commands, and p4 submit, act on the default changelist; for example, if a user types p4 add filename, this file is added to the default changelist. When a user types p4 submit, the default changelist is submitted.
When p4 submit is typed, a change form is displayed that contains the files in the default changelist. Any file can be deleted from this list; when a file is deleted, it is moved to the next default changelist, and will appear again the next time p4 submit is typed. A changelist must contain a user-entered description, which should describe the nature of the changes being made.
p4 submit can take an optional, single file pattern as an argument. In this case, only those files in the default change that match the file pattern will be included in the submitted changelist. Since the p4d server program must receive this file pattern as a single argument, make sure to escape the * wildcard if it is used.
When the user quits from the p4 submit editor, the changelist is submitted to the server and the server attempts to update the files in the depot. If there are no problems, the changelist is assigned a sequential number, and its status changes from new or pending to submitted. Once a changelist has been submitted, it becomes a permanent part of the depot's metadata, and is unchangeable except by Perforce superusers.
Any single client file can be included in only one pending changelist.
Files can be moved from one changelist to another with p4 reopen -c changenum filenames, where changenum is the number of the moving-to changelist. If files are being moved to the default changelist, use p4 reopen -c default filenames.
Ed is working on two bug fixes simultaneously. One of the bugs involves mail filtering and requires updates of
files in the filter subdirectory; the other problem is in the elm aliasing system, and requires an update of
utils/elmalias.c.
Ed wants to update each bug separately in the depot; this will allow him to refer to one bug fix by one change
number and the other bug fix by another change number. He's already started fixing both bugs, and has opened
some of the affected files for edit. He types p4 change, and sees
Ed wants to use this changelist to submit only the fix to the filter problems. He changes the form, deleting the
last file revision from the file list; when he's done, the form looks like this:
Change: new |
When he quits from the editor, he's told
Change 29 created with 2 open file(s).
The file that he removed from the list, utils/elmalias.c, is now found in the default changelist. He could
include that file in another numbered changelist, but decides to leave it where it is.
He fixes both bugs at his leisure. He realizes that the filter problem will require updates to another file: filter/lock.c
. He opens this file for edit with p4 edit -c 29 filter/lock.c; opening the file with the -c
29 flag puts the file in changelist 29, which he created above. (If the file had already been open for edit in the
default changelist, he could have moved it to changelist 29 with p4 reopen -c 29 filter/lock.c).
Ed finishes fixing the aliasing bug; since the affected files are in the default changelist, he submits the changelist
with a straightforward p4 submit. He'll finish fixing the filtering bug later.
If the submit failed because the client-owned revision of the file is not the head revision, a merge must be performed before the changelist will be accepted. (File merging is described in chapter 5).
Ed has finished fixing the filtering bug that he's been using changelist 29 for. Since he created that changelist,
he's since submitted another changelist (change 30), and two other users have submitted changelists. Ed submits
change 29 with p4 submit -c 29, and is told
Change 29 renamed change 33 and submitted.
Changelists that have already been submitted can be deleted by the superuser only under very specific circumstances. Please see the Perforce System Administrator's Guide for more information.
Perforce 2000.1 Command Line User's Guide (2000.1.ug.3) | ||
<< Previous Chapter Perforce Basics: Miscellaneous Topics |
Table of Contents Index Perforce on the Web |
Next Chapter >> Labels |