p4 have

List files and revisions that are synced to the client workspace.


p4 [g-opts] have [--graph-only] [file...]

Syntax conventions


List the files and revisions that are copied to the client workspace with p4 sync.

If file patterns are provided, the list is limited to the files that meet both criteria:

  • match one of the patterns
  • mapped to the client view

p4 have lists the files, one per line, in the format:

depot-file#revision-number - local-path

  • depot-file is the path to the file in depot syntax.
  • revision-number is the have revision, the revision presently in the current client workspace
  • local-path is the path as represented in terms of the local filesystem (that is, in local syntax).


file ...

List revision numbers of the currently-synced files. If file name is omitted, list all files synced to this client workspace.


For hybrid workspacesClosed A client workspace that supports both repos of type graph (see 'Git Connector') and the classic Helix Core file revision model., limit the report to graph depots only.


See Global options.

Usage Notes

Can File Arguments Use Revision Specifier? Can File Arguments Use Revision Range? Minimal Access Level Required




  • Some Helix Server documentation refers to the have listClosed An internal list indicates which files and revisions the client workspace has sync'd from the depot. See 'p4 have' in Helix Core Command-Line (P4) Reference. of a client workspace. The have list is the list of files reported by p4 have, and is the list of file revisions that are most recently synced from the depot.

    The have list excludes:

    • files that exist in your client workspace but not in the depot
    • files at deleted revisions

    For instance, if you use p4 add to open a newly created file in your client workspace for add, or if you use p4 integrate to create a group of files in your client workspace, but they are not yet submitted, the new files do not appear in the output of p4 have.

    The set of all files in your client workspace is the union of the set of files listed by p4 have with the set of files listed by p4 opened.

  • For files containing the special characters @, #, *, and %, the depot-file field shows the ASCII expression of the character’s hexadecimal value, and the local-path shows the special character. For example:

    //depot/status/100%25.txt#1 - /staff/status/100%.txt

Attempting to sync an open file to an earlier version

If a file is open for edit, p4 have reflects the most recent attempt at p4 sync. For example, if you open a file for edit that is at version #3, and then attempt to sync that file to an earlier version, such as #1, the sync attempt fails. This is a feature to prevent you from accidentally overwriting your work at version #3. However, p4 have optimistically assumes p4 sync succeeded and lists the file at version #1. If you submit version #3, which increments the version to #4, and run p4 have again, p4 have lists version #4.


p4 sync //depot/name/...
p4 have //depot/name

p4 sync //depot/name/...#4
p4 have //depot/name

In each of these two pairs of commands:

The first p4 have shows that the highest revision of the file has been copied to the client workspace.

The second p4 have shows that the fourth revision is the revision currently in the client workspace.

Related Commands

To copy file revisions from the depot to the client workspace

p4 sync

List the commit most recently synced to the current workspace p4 have (graph)