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

P4 CLI Reference | 2025.1

# p4 changes

List submitted and pending changelists.

The command `p4 changelists` is an alias for `p4 changes`.

## Syntax

    p4 [g-opts] changes [-i -t -l -L -f] [-c client [-E]] [ -e changelist#] [-m max]
                        [-r] [-s status] [-u user | --me] [[FileSpec][revSpec]]
                        [--stream | --nostream]

Syntax conventions

## Description

Use `p4 changes` to view a list of submitted and pending changelists. When you use `p4 changes` without any arguments, all numbered changelists are listed. (The default changelist is never listed.)

By default, the format of each line is:

    Change num on date by user@client [status] description

You can combine options and file patterns to limit the changelists that are displayed.

If you provide file patterns as arguments, the changelists listed are those that affect files matching the patterns, whether `submitted` or `pending`.

Revision specifications and revision ranges can be included in the file patterns:

- To limit output to only those changelists made from the named client workspace or the named user, use the `-c client` or the `-u user` option
- To limit output to only those changelists with the provided `status` (`pending`, `shelved`, or `submitted`) value, use the `-s status` option.
- To limit output to only changes that are greater or equal to the specified changelist number, use the `-e changelist#` option

In a multi-server configuration, changes that are pending or shelved on an edge server are visible via the `p4 changes` command on other servers in the installation.

Administrators can use the `-f` option to view restricted changelists.

### status

The `status` value appears only if the changelist is `pending` or `shelved`. The description is limited to the first 31 characters unless you provide the `-L` option for the first 250 characters, or the `-l` option for the full description.

If you specify `//...` or any other path or revision specifier, the output includes only submitted changes. If you want to see pending or shelved changes when using `//...` or any other path or revision specifier, add the `-s status` option: `-s pending` or `-s shelved`. For example, `p4 changes -s pending //depot/project1/...#3`

### Limit output with -m max

You can also use the `-m max` option to limit output to `max` changes:

p4 changes -m 5 shows the five most recent changes.

To reverse the order of the list so that the earliest changes appear before the most recent changes, use the `-r` option:

p4 changes -r -m 5 shows the five oldest changes.

### time

If you use the `-t` option to display the time of each changelist, the format is:

    Change num on datehh:mm:ss by user@client [status] description

### Global -u versus p4 changes -u

The global `-u` in Global options has a different meaning than the `p4 changes -u` option:

p4 -u maria changes -u linda

where `p4 -u maria` uses the global option to change the current user to maria, and `-u linda` asks for a list of the changes that user linda made.

## Options

`-c client` | Display only changes owned by the specified client. You can repeat this option to filter the result for multiple clients. Each client can include wildcards to form a search pattern. This search pattern can start with `-` to exclude changes by those clients from the result. Adding the `-E` (or `--client-case-insensitive`) suboption makes the search pattern case-insensitive, even on a case-sensitive server.
`-e changelist#` | Display only changes where the changelist number is equal to, or higher than, the specified changelist number
`-f` | View restricted changes (requires `admin` permission)
`-i` | Include changelists that affected files that were integrated with the specified files
`-l` | List long output, with the full text of each changelist description
`-L` | List long output, with the full text of each changelist description truncated at 250 characters
`-m max` | List only the highest numbered `max` changes.
`-r` | Reverse the order of the list, earliest first instead of most recent first
`-s status` | Limit the list to the changelists with the specified status : `pending`, `submitted`, or `shelved`. If you specify `//...` or any other path or revision specifier, the output includes only submitted changes, but you can explicitly specify `-s pending` or `-s shelved`
`-t` | Display the time (hour:minute:second) after the date (yyyy/mm/dd) of each change. Without `-t`, the output shows only the date.
`-u user` | List only changes made from the specified user or users. Adding the `-E` or `--user-case-insensitive` option indicates that the `user` value is a case-insensitive search pattern, even on a case-sensitive server. This search pattern can start with `-` to exclude changes by those users from the result.
`--stream` | Displays only changes that contain a stream spec
`--nostream` | Displays only changes that do not contain a stream spec
`--me` | Equivalent to -u $P4USER
`g-opts` | See Global options

## Usage notes

Can File Arguments Use Revision Specifier? | Can File Arguments Use Revision Range? | Minimal Access Level Required | Command Alias
--- | --- | --- | ---
Yes | Yes | `list` | `p4 changelists`

- If `p4 changes` is called with multiple file arguments, the sets of changelists that affect each argument are evaluated individually. The final output is neither combined nor sorted. The effect is the same as calling `p4 changes` multiple times, once for each file argument.
- If files are not specified, `p4 changes` limits its report according to whether or not changes are public or restricted. Restricted `submitted` or `shelved` changes are not reported unless you either own the change or have `list` permission for at least one file in the change. Restricted `pending` (but unshelved) changes are visible only to the change owner.
- p4 changes myfile#have accesses the db.have table lockless for the duration of the compute phase.

- The command returns no output if there is no object to report on.

## Examples

p4 changes file.c#3 | Show the changelists associated with file versions #1, #2, and #3.
p4 changes file.c#3,6 | Show the changelists associated with file versions #3, #4, #5, and #6.
p4 changes -e 800 file.c | Show the changelists that are greater or equal to changelist number 800
`p4 changes -m 5 //depot/project/...` | Show the last five submitted changelists that include any file under the `project` directory.
`p4 changes -m 5 -c eds_elm` | Show the last five submitted, pending, or shelved changelists from client workspace `eds_elm`.
`p4 changes -m 5 -s shelved -u edk` | Show the last five shelved changelists from user `edk`.
`p4 changes file.c@2023/05/01,2023/06/01` | Show any changelists that include file `file.c`, as mapped to the depot through the client view, during the month of May 2023.
`p4 changes -m 1 -s submitted` | Output a single line showing the changelist number of the last submitted changelist.
`p4 changes @2022/04/01,@now` | Show all changelists submitted from the specified date to the present.
`p4 changes @2022/04/01` | For changelists that are submitted, show all changelists submitted before the specified date. For changelists that are pending or shelved, show all changelists created before the specified date.
`p4 changes -r -m 1 //depot/project/branch/...` | Show the first (oldest) change on the specified branch.
`p4 changes -t -m 25` | Show the last five submitted and pending changelists with time format showing full timestamp of yyyy/mm/dd hour:minute:second

### Examples with the * wildcard

If you use the `*` wildcard, enclose the search pattern in double quotes (").

`p4 changes -u maria -u "zac*" -u "-zackary"` | Multiple `-u` options are supported. This will list changes by `maria` and all users starting with `zac` except `zackary`.

## Related commands

To submit a pending changelist | `p4 submit`
To create a new pending changelist | `p4 change`
To read a detailed report on a single changelist | `p4 describe`

Your search for returned results