如何修复Perforce错误"无法删除可写文件"或Perforce错误消息 - 无法Clobber可写文件

Shu*_*rma 15 perforce synchronization writable

错误:无法删除可写文件://文件名//

解决方案:当您尝试同步文件时,perforce希望工作区中的文件具有只读权限.但是如果文件没有签出(通过p4编辑)但具有写入权限,那么它将抛出上述错误.将文件更改为只读并再次同步将解决此问题.或尝试删除工作区并再次获取最新版本.

Sam*_*ord 17

由于Perforce对您在工作区中完成的意外覆盖("破坏")工作非常谨慎,因此发生了"无法删除可写"文件错误.

正常的Perforce工作流是指p4 sync一个文件(以只读方式将其放入工作区),p4 edit如果你想修改它(这使它可写).已打开的文件p4 edit将始终被跳过p4 sync(除非安全地安排,resolve如果需要),并将包含在a中p4 submit.

如果文件未打开但可写,则表示此工作流程中出现了问题,例如,您手动使文件可写以对其进行更改,如果sync更新此文件,则更改将丢失!因此,默认行为sync是跳过更新可写文件.

有了这个解释,这里有一些选择:

  1. p4 sync -f将强制更新未打开的文件,无论文件是否已过期,以及文件是否可写.(仍会跳过打开的文件.)

  2. p4 edit将打开该文件.从那里您可以选择p4 revert(放弃更改)或p4 submit(提交更改).

  3. 更改noclobberclobber客户端规范会删除针对clobbering可写文件的安全措施.

  4. 更改noallwriteallwrite默认情况下使所有文件都可写,这会隐式删除noclobber安全措施.在当前版本的服务器中,它还p4 sync -s默认启用"安全同步"选项(),在更新之前强制对所有文件进行摘要计算.这比依赖写位慢,但更准确.请注意,如果您在不打开文件的情况下处理文件,仍然存在不将它们包含在您的文件中的风险submit- p4 reconcile命令是您的朋友.

  • 我只想添加#1,p4 sync -f应该用于强制同步那些特定文件.有人可能会试图在他们的软件仓库上运行p4 sync -f来避免clobber消息,并付出完全同步每个文件的代价. (6认同)
  • `p4 sync -f` 可能过于“繁重”,并且在大工作树的情况下可能会花费大量时间。我不会把这个作为第一选择。 (2认同)

小智 8

Perforce 将其文件保持为只读,直到打开它们进行编辑。由于某种原因,我使该文件可写,而 Perforce 对此错误消息进行了抱怨。

当我将文件设置为只读后,错误已修复并且同步工作正常:

$ chmod -w /home/Nisha/p4_workspace/foobar.txt
Run Code Online (Sandbox Code Playgroud)

下面还将解决该问题 -

p4 sync -f file-name
Run Code Online (Sandbox Code Playgroud)