synchronization - 如何修复 Perforce 错误 "Can' t clobber 可写文件”或 Perforce 错误消息 - 无法破坏可写文件

标签 synchronization perforce writable

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

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

最佳答案

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

正常的 Perforce 工作流程是p4 同步一个文件(将其以只读方式放入您的工作区),然后如果您想修改则p4 编辑它它(这使得它可写)。使用 p4 edit 打开的文件将始终被 p4sync 跳过(除非需要安全地安排 resolve),并且将由 p4 提交 包含。

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

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

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

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

  3. 在客户端规范中将 noclobber 更改为 clobber 可消除防止破坏可写文件的保护措施。

  4. noallwrite 更改为 allwrite 会使所有文件默认可写,这会隐式删除 noclobber 保护措施。在服务器的当前版本中,它还默认启用“安全同步”选项(p4sync -s),在更新所有文件之前强制对所有文件进行摘要计算。这比依赖写入位慢,但更准确。请注意,如果您在不打开文件的情况下处理文件,您仍然面临着未将它们包含在您的提交中的风险——p4 reconcile命令在这里是您的 friend 。

关于synchronization - 如何修复 Perforce 错误 "Can' t clobber 可写文件”或 Perforce 错误消息 - 无法破坏可写文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48315647/

相关文章:

java - 如何保持服务器和 "Client Desktop App"同步?

perforce - 如何从仓库 View 中删除任务流

null - Hadoop 0.20.205.0 WritableComparator 不遵守可配置键

java - 如何在 groovy 中编写可写接口(interface)代码

php chmod() 不改变权限

java - 这个同步有什么意义?

javascript - 如何在 JavaScript 中同步 API 响应?

java - 如果迭代已经同步,是否有必要使用synchronizedList而不是List?

perforce - Perforce 中的/home 中的 db.* 文件?

perforce - 当出现客户端未知错误时如何在 Perforce P4 中设置客户端根