Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to fix Perforce error "Can't clobber writable file" or Perforce Error Message - Can't Clobber Writable File

Error: Can't clobber writable file : //file name//

Solution: When you try to sync a file, perforce expects your files in workspace will have read-only permissions. If a file is not checked out (by p4 edit) but has write permission then it will throw the above error. Changing the file to read-only and syncing again will solve the issue. Or try removing the workspace and get the latest revision again.

like image 861
Shubham Verma Avatar asked Jan 18 '18 07:01

Shubham Verma


2 Answers

The "can't clobber writable file" error happens because Perforce is very cautious about accidentally overwriting ("clobbering") work that you've done in your workspace.

The normal Perforce workflow is to p4 sync a file (which puts it into your workspace as read-only) and then to p4 edit it if you want to modify it (this makes it writable). A file that has been opened with p4 edit will always be skipped by p4 sync (except to safely schedule a resolve if needed), and will be included by a p4 submit.

If a file is not open, but is writable, it means that something has gone wrong in this workflow, e.g. you manually made the file writable to make changes to it, and if sync updates this file, your changes will be lost! So the default behavior of sync is to skip updating writable files.

With that explanation out of the way, here are some options:

  1. p4 sync -f FILENAME will force an unopened file to be updated, whether or not it is out of date, and whether or not it is writable. (Open files are still skipped.)

  2. p4 edit FILENAME will open the file. From there your options are p4 revert (discarding your changes) or p4 submit (submitting your changes).

  3. Changing noclobber to clobber in your client spec removes safeguards against clobbering writable files.

  4. Changing noallwrite to allwrite makes all files writable by default, which implicitly removes the noclobber safeguard. In current versions of the server it also enables the "safe sync" option (p4 sync -s) by default, forcing digest computations on all files before updating them. This is slower than relying on the write bit, but much more accurate. Note that if you work on files without opening them, you still run the risk of not having them included in your submit -- the p4 reconcile command is your friend here.

like image 165
Samwise Avatar answered Nov 16 '22 16:11

Samwise


Perforce keeps its files read-only until they are opened for editing. I had for some reason made this file writeable and Perforce was complaining about that with this error message.

The error was fixed and the sync worked once I made the file read-only:

$ chmod -w /home/Nisha/p4_workspace/foobar.txt

Also below will fix the problem-

p4 sync -f file-name
like image 1
Nisha Nagrani Avatar answered Nov 16 '22 14:11

Nisha Nagrani