如何修复 Perforce 错误“无法破坏可写文件”或 Perforce 错误消息 - 无法破坏可写文件

问题描述 投票:0回答:5
Error: Can't clobber writable file : //file name//

解决方案: 当您尝试同步文件时,perforce 期望您在工作区中的文件具有只读权限。如果一个文件没有被签出(通过

p4 edit
)但是有写权限那么它会抛出上述错误。 将文件更改为只读并再次同步 将解决问题。或者尝试删除工作区并再次获取最新版本。

synchronization perforce writable
5个回答
40
投票

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

正常的 Perforce 工作流程是

p4 sync
一个文件(将其作为只读文件放入您的工作区),然后如果您想修改它,则
p4 edit
它(这使其可写)。使用
p4 edit
打开的文件将始终被
p4 sync
跳过(除非需要安全地安排
resolve
),并由
p4 submit
包含。

如果文件未打开,但可写,则表示此工作流中出现问题,例如您手动使文件可写以对其进行更改,如果

sync
更新此文件,您的更改将会丢失!所以
sync
的默认行为是跳过更新可写文件。

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

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

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

  3. 在您的客户端规范中将

    noclobber
    更改为
    clobber
    消除了防止破坏可写文件的保护措施。

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


6
投票

Perforce 将其文件保持只读状态,直到它们被打开进行编辑。出于某种原因,我让这个文件可写,Perforce 抱怨这个错误消息。

错误已修复,一旦我将文件设置为只读,同步就开始了:

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

下面也将解决问题-

p4 sync -f file-name

0
投票

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


0
投票

看来您遇到的错误可能与以下内容有关:“Can't clobber writable file 'Local File Path'。”

要解决此问题,请按照以下步骤操作:

  1. 访问本地计算机上 Perforce 共享的路径。
  2. 右键单击导致错误的文件并选择“属性”。
  3. 在属性对话框的“常规”选项卡中,找到“属性”部分。
  4. 选中“属性”部分中的“只读”框。
  5. 单击“应用”以保存更改。
  6. 重新同步文件夹以确保更改生效。

-2
投票

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

有效

© www.soinside.com 2019 - 2024. All rights reserved.