Helix Core is now P4. Product user interfaces will be updated soon. Learn more >>

P4 Server Administration Documentation | 2025.1

# Promote shelved changelists

Changelists shelved on an edge server, which would normally be inaccessible from other edge servers, can be automatically or explicitly promoted to the commit server. Promoted shelved changelists are available to any edge server.

- In a shared archive configuration, where the commit server and edge servers have access to the same storage device for the archive content, shelves are automatically promoted to the commit server. See Automatically promote shelves.
- You must explicitly promote a shelf when the commit and edge servers do not share the archive. See Explicitly promote shelves.

You can view a shelf’s promotion status using the `-ztag` output of the `p4 describe`, `p4 changes`, or `p4 change -o` commands.

For limitations, see Working with promoted shelves.

## Automatically promote shelves

When the edge server and commit server are configured to access the same archive contents, shelf promotion occurs automatically, and promoting shelved files with `p4 shelve -p` is not required.

To configure the edge server and commit server to access the same archive contents, set `server.depot.root` to the same path for both the commit and edge server, and set the `lbr.replication` configurable to `shared` for the edge server. For example:

    p4 configure set commit#server.depot.root=/p4/depot/root
    p4 configure set edge#server.depot.root=/p4/depot/root
    p4 configure set edge#lbr.replication=shared

## Explicitly promote shelves

You can explicitly promotes shelves by setting a configurable or by using a command.

Configurable | Command
--- | ---
1. Setting the `dm.shelve.promote` configurable to 1 makes edge servers automatically promote shelved files to the commit server. The file content is transferred and stored both on the commit server and the edge server. This does NOT transfer shelves created on the commit server to the edge servers automatically. If you are using P4 Code Review on an edge server, automatic promotion is necessary. Search for "promote all shelved changes" under P4 Server configuration for P4 Code Review in the P4 Code Review Documentation. Setting `dm.shelve.promote` can affect performance. | Using the `-p` option with the `p4 shelve` command explicitly promotes the specified changelist. For example, given two edge servers, `edge1` and `edge2`: On `edge1`, shelve and promote a changelist by running:
       p4 shelve -p -c 89
2. On `edge2`, the shelved changelist is now available by running:
       p4 describe -S 89

### Promotion is only required once

Subsequent `p4 shelve` commands automatically update the shelved changelist on the commit server and use server lock protection.

For example, on `edge1`, make changes and refresh the shelved changelist by running:

    p4 shelve -r -c 89

The updates can now be seen on `edge2` by running:

    p4 describe -S 89

## Promoting shelves when unloading clients

Use the `-p` option for the `p4 unload` command to promote any non-promoted shelves belonging to the specified client that is being unloaded. The shelf is promoted to the commit server where it can be accessed by other edge servers.

## Working with promoted shelves

You can:

- Delete the shelved files from the changelist, but you cannot unpromote a shelved changelist.

- Unshelve a promoted shelf into open files and branches on a server other than the server where the shelf originated.

- Run `p4 submit -e` on a promoted shelf only on the server that owns the change.
- Move a promoted shelf from one edge server to another using the `p4 unshelve` command.

Your search for returned results