Shelving Files

Shelving enables you to store copies of open files temporarily in
the shared Perforce repository without checking them in. Shelving is useful for
a variety of purposes, including taking and restoring snapshots of in-progress
work and reviewing other users' code before it's checked in. When you shelve a
file, a copy is placed in a pending changelist from which other users can
unshelve it. Pending changelists that contain shelved files are displayed with
the following icon and badge: . When the changelist is
expanded, shelved files are listed under the Shelved Files
node, indicated with the following icon: .

When you manage shelved files, note the following:

Basics: To be shelved, a file must be checked out.
However, you cannot unshelve a checked-out file.

Submitting shelved files: As of Perforce Server 2013.1,
you can submit a shelved file directly. For previous versions of Perforce
Server, you must first unshelve a file to submit it, then delete the
shelved copy. (Unshelving does not delete the shelved copy.)

Managing changelists: You cannot move a shelved copy to
another pending changelist. If you revert a file after shelving it, the
copy remains shelved in the changelist until you delete it. Only the
changelist owner can reshelve or delete files that are shelved in the
changelist. For Perforce Server releases that predate version 2013.1, you
cannot submit a changelist that contains shelved files; you must delete the
shelved copies before submitting. Starting with Perforce Server 2013.1, you
can submit shelved files directly, but your changelist must contain only
shelved files.

File history: No file history is created when you shelve
or unshelve files.

Diffing: You can diff shelved copies just as you diff
any other file. For example, to display any changes you made after shelving
a file, drag the shelved copy and drop it on the checked-out file.

Shelve checked-out files in a pending changelist

When prompted, enter a description and click OK. P4V
shelves the file in the selected changelist (or, if you are shelving files
in the default changelist, creates a new changelist).

Alternately, you can shelve a checked-out file by dragging it from the
pending changelist or depot pane to the Shelved Files node of
the changelist where you want it shelved.

Unshelve files

After shelving a file, you or another user can unshelve it, which
restores the shelved copy to your workspace and opens it in the changelist of
your choice. Unshelving does not remove files from the shelf.

Check the files you want to unshelve and click Unshelve
and any other desired options. The shelved file is copied to your workspace
and opened in the specified changelist.

To unshelve a file that was shelved by another user, you must have permission
to check out the file. When you unshelve a file that was shelved by another user,
it is copied to one of your changelists, from which you can edit and submit the
file.

To unshelve a file into a different branch than the one it was shelved in:

Select the Map unshelved files checkbox on the Unshelve
dialog.

Select the way you want to map the unshelved files to the target branch:

Using Branch Mapping: Enter the branch mapping you want to use, or browse for it.

You can use any branch mapping that maps the branch the file was shelved in as either source or target. Your current workspace view must be mapped to the target.

Using Stream: Type or select the stream you want to use to unshelve.

The stream must be the child in relation to the location of the files being unshelved. For example, if the files are shelved in a mainline and you want to unshelve into a development child, you must select the development child. Likewise, if the files are shelved in the development child and you want to unshelve into the mainline, you must select the development child. This still holds true if you reuse your workspace across streams. If you are working in the mainline and shelve some files, then move your workspace to the development child, you must still specify the development child stream to unshelve.

Submit shelved files

As of Perforce Server 2013.1, you can submit shelved files directly.

Note. If there are non-shelved files along with shelved
files in a pending changelist, you must first revert the non-shelved files or
move them to another changelist. You cannot submit shelved files from a task
stream.

To submit shelved files in a pending changelist, context-click the
changelist or shelved files folder and choose Submit Shelved
Files...

Delete shelved files

Shelved files remain shelved until you delete them from the pending
changelist. To delete a shelved file from a pending
changelist, context-click the file and choose Delete.
Alternately, context-click the pending changelist and choose Delete
Shelved Files...