If I use p4 move
to move a large file (or large number of files), such that they are tagged move/delete
and move/add
in perforce, when other clients get that revision, do they have to redownload those files? Or will it recognise that it can just move those files locally.
If that is not the default behaviour is there any way to achieve it? Or is the best bet to move the files manually and do a reconcile?
The files will be re-downloaded, at least as of the server version I'm on. The only special-case optimization I'm aware of to sidestep downloading content for a newly synced revision is the case where the client file has been remapped to a different (identical) depot file. Syncing a moved file is handled as if the old file were deleted and the new file were added:
C:\Perforce\test\move>p4 -vrpc=3 sync ... | grep "RpcRecvBuffer func"
RpcRecvBuffer func = protocol
RpcRecvBuffer func = client-Crypto
RpcRecvBuffer func = flush1
RpcRecvBuffer func = client-Message
RpcRecvBuffer func = client-DeleteFile
RpcRecvBuffer func2 = B719AE71314697DE0C0C3AC29A76903D
RpcRecvBuffer func = client-Ack
RpcRecvBuffer func = client-Message
RpcRecvBuffer func = client-OpenFile
RpcRecvBuffer func = client-WriteFile
RpcRecvBuffer func = client-CloseFile
RpcRecvBuffer func2 = B719AE71314697DE0C0C3AC29A76903D
RpcRecvBuffer func = client-Ack
RpcRecvBuffer func = flush1
RpcRecvBuffer func = release
Doing a manual move followed by reconcile does indeed sound like the best workaround if you have a lot of moved files and you want to avoid the download.