Perforce does not have a built-in way of renaming files or moving them to a different part of the tree. Simply copying a file to the new location, doing a p4 add on it, and a p4 delete on the old copy, works, but does not preserve change history of the file. This can make future integrations with parents and children very bumpy, in fact. A better method of dealing with this is to do a one-time, in-tree integration, like so:
% p4 integrate -i oldfile newfile % p4 resolve % p4 delete oldfile % p4 submit
The integration will force Perforce to keep a record of the
relationship between the old and new names, which will assist it in future integrations.
The -i
flag tells it that it is a “baseless”
integration, meaning that there is no branch history available for it to use in the
integration. That is perfect for an integration like this, but should not be used for
normal branch-based integrations.