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

解决方案:当您尝试同步文件时,perforce 预计您在工作区中的文件将具有只读权限。如果一个文件没有被检出(by p4 edit)但有写权限,那么它将抛出上述错误。将文件更改为只读并再次同步将解决该问题。或者尝试删除工作区并再次获取最新版本。

4

3 回答 3

33

发生“无法破坏可写文件”错误是因为 Perforce 对于意外覆盖(“破坏”)您在工作区中完成的工作非常谨慎。

正常的 Perforce 工作流程是p4 sync一个文件(将它作为只读放入您的工作区),然后p4 edit如果您想修改它(这使其可写),然后再到它。已打开的文件p4 edit将始终被跳过p4 sync(除非需要安全地安排 a resolve),并且将包含在 ap4 submit中。

如果一个文件没有打开但是是可写的,这意味着在这个工作流程中出现了问题,例如,您手动将文件设为可写以对其进行更改,如果sync更新此文件,您的更改将丢失!所以默认行为sync是跳过更新可写文件。

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

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

  2. p4 edit FILENAME将打开文件。从那里您的选择是p4 revert(放弃您的更改)或p4 submit(提交您的更改)。

  3. 在您的客户端规范中更改noclobberclobber删除了防止破坏可写文件的保护措施。

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

于 2018-01-18T20:39:00.047 回答
1

我使用的是 Perforce 软件版本而不是 CLI。对我有用的是,我将整个项目权限更改为只读并关闭 Perforce 并再次打开它。然后它能够​​与云同步。

于 2020-06-01T07:31:12.787 回答
-2

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

有用

于 2020-03-25T01:22:36.257 回答