To modify a file, you must check it out.
When you check out a file, Perforce adds information about the file to a changelist and changes the writable attribute of the file in your local workspace from read-only to read/write.
A changelist defines a logical grouping of work across a set of files and folders.
Information contained in a changelist includes the changelist identifier, a list of files, the date the changes were committed, etc.
The files identified in a single changelist can have any combination of changes that might be made to a set of files in a workspace including edits to file contents, the addition or deletion of files and folders, file renames, etc.
A changelist can be in one of three states: pending, submitted, and shelved.
Unsubmitted changelists are referred to as pending changelists.
Once a changelist has been successfully submitted to the server, the changelist state is updated to submitted.
Shelved changelists are a special form of pending changelist. You can use shelved changelists to temporarily store workspace files on the server without submitting your changes to the versioned file repository.
Shelving and shelved changelists are discussed in another module topic area.
The Perforce server keeps track of the files you have checked out in pending changelists stored in the system metadata.
When you view a changelist in a Perforce GUI client, you are looking at a local copy of the changelist stored on the server.
Perforce maintains a default pending changelist in the system metadata for every workspace. When you check out a file, you can add it to the default pending changelist for your workspace or create a new numbered pending changelist for your work.
Organizing your files across changelists dedicated to a specific scope of work is a good practice. For example, you might have the work you are doing on a new product feature in one changelist, and the files you are modifying to fix a product bug in another.
Perforce keeps track of a number sequence used for changelist IDs. When you create a new numbered pending changelist for a set of files you want to edit, Perforce assigns an ID number for the changelist using the next number in the sequence.
When you submit changes in a numbered pending changelist, Perforce verifies that the number originally assigned to the changelist is still the next number in the sequence. If not, which is most often the case when many people are working simultaneously in the same depot, Perforce generates a new ID number for the changelist using the next number in the sequence before storing the changelist in the system metadata.
Because Perforce generates unique id numbers for each submitted changelist in sequential order, the changelist ids reflect the time each changelist was submitted to the server.