p4 flush
Update the have list
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 without copying any
files.
Syntax
p4 [g-opts] flush [-f -L -n -q] [FileSpec[revSpec]]
Description
p4 flush can cause commands to behave in unexpected ways, so use it only when the situation is appropriate. See the two Examples.
The p4 flush command performs only Step 2 of p4 sync FileSpec two-step operation:
Step 1: The file revisions in the FileSpec are copied from the depot to the client workspace.
Step 2: The have list of the client workspace is updated to reflect the new client workspace contents.
Under most circumstances, the have list of a client workspace reflects the contents of that workspace. However, if the workspace’s contents do not match
the have list, p4 flush might
make the have list match the actual contents. Because p4
flush performs no actual file transfers, this command is
much faster than the alternative of running p4
sync.
Options
|
|
Force the flush. Helix Server performs the flush even if the client workspace already has the file at the specified revision. |
|
|
For scripting purposes, perform the flush on a list of valid file arguments in full depot syntax with a valid revision number. |
|
|
Display what the results of the flush would be without actually performing the flush. This preview can help you avoid unwanted surprises. |
|
|
Quiet operation: suppress normal output messages. Messages regarding errors or exceptional conditions are not suppressed. |
|
|
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 |
|
p4 sync
-k. |
-
Because
p4 flushupdates the have list without copying files, andp4 sync -fupdates the client workspace to match the have list,p4 flush filesfollowed byp4 sync -fis almost equivalent to thep4 syncfilescommand. This means that a bad flush can be partially fixed by following it with ap4 sync -fof the same file revisions that were originally flushed. However, this is not a complete fix because any file revisions that were deleted from the have list byp4 flushremain in the client workspace even afterp4 sync -fhas run. In such a case, manually remove deleted file revisions from the client workspace.
Examples
-
Ten users at the same site need to set up new, identical client workspaces from the same depot at a remote location over a slow link. Typically, each user would run identical
p4 synccommands, which means the command would be run a total of ten times. However, if bandwidth is limited, this process can save time:- One user runs
p4 syncfilesfrom the client workspacefirstworkspace. - The other users copy the newly-synced files from the first user’s client workspace into their own client workspaces using their local OS file-copying commands.
-
The other users run
p4 flush files@firstworkspace, which quickly brings their client workspaces' have lists into sync with the files copied into the client workspaces in Step 2. Becausep4 flushmoves no files across the slow link, this is much faster then running the samep4 synccommand ten separate times.
- One user runs
-
Joe has a client workspace called
joethat has aRoot:of/usr/joe/project1/subproj
and aView:of//depot/joe/proj1/subproj/... //joe/...
Joe decides that all the files under/usr/joe/project1need to be included in the workspace, and usesp4 clientto change theRoot:to/usr/joe/project1
and theView:to//depot/joe/proj1/... //joe/....This keeps his current client workspace files in the same place while extending the scope of the workspace to include other files. But when Joe runs his next
p4 sync, he is surprised to see that Helix Server deletes every non-open file in the client workspace and replaces it with an identical copy of the same file!Helix Server behaves this way because:
- the have list describes each file’s location relative to the client root
- the physical location of each file is determined when each Helix Server command is run.
Therefore:
- Helix Server thinks that each file has been relocated
- p4 sync deletes the file from its "old" location and copies it into its "new" location
The efficient solution in this case is to use
p4 flush #haveto update the client workspace’s have list to reflect the "new" locations of the files without actually copying any files.Related Commands
p4 flush is an alias for
p4 sync-kp4 sync-kTo copy files from the depot to the client workspace
To bring the client workspace in sync with the have list after a bad
p4 flushp4 sync-f






