From the Perforce documentation:
Shelving is the process of temporarily
storing work in progress on a Perforce
Server without submitting a
changelist. Shelving is useful when
you need to perform multiple
development tasks (such as
interruptions from higher-priority
work, testing across multiple
platforms) on the same set of files,
or share files for code review before
committing your work to the depot.The p4 shelve command creates,
modifies, or discards shelved files in
a pending changelist. Shelved files
persist in the depot until they are
discarded (by means of p4 shelve -d)
or replaced by subsequent p4 shelve
commands.After shelving files, you can revert
or modify them in your client
workspace, and restore the shelved
versions of those files to your
workspace with the p4 unshelve
command. While files are shelved,
other users can unshelve the shelved
files into their own workspaces, or
into other client workspaces.Files that have been shelved can also
be accessed with the p4 diff, p4
diff2, p4 files, and p4 print
commands, using the revision specifier
@=change, where change is the pending
changelist number.If no arguments are specified, p4
shelve creates a new changelist, adds
files from the user’s default
changelist, and (after the user
completes a form similar to that used
by p4 submit), shelves the specified
files into the depot. If a file
pattern is given, p4 shelve shelves
only the files that match the pattern.