perforce如何清理在不存在的客户端和不存在的工作空间上打开的文件

时间:2013-11-04 20:55:03

标签: perforce

标题说明了一切。

有一个文件,perforce认为它是由用户在给定工作空间和给定的更改列表中以独占模式打开的,但工作空间和更改列表都不存在。工作区被管理员强制删除,文件从更改列表中神秘地消失,然后我们从中删除了所有其他文件并将其删除。

文件仍显示为该用户在该更改列表上的该工作区上打开并锁定。

最有可能损坏的perforce数据库,这里可能的解决方案,在perforce论坛上回复:https://kb.perforce.com/AdminTasks/BackupAndRecovery/RarelyUsedSe..ommandFlags/P4dXxFlag

3 个答案:

答案 0 :(得分:0)

您知道管理员如何移除工作区吗? According to the documentation,删除工作区应自动恢复任何文件,但将本地文件保留在文件系统上,该文件系统应该足够直接删除。

如果问题只是文件保持锁定,那么简单:

p4 unlock -f <file>
管理员发出的

应解决问题。

答案 1 :(得分:0)

将库转移到新服务器后,我设置了此标记,我不建议这样做。

我在新系统上创建了用户。 我能够看到旧的工作区,这是因为过滤器而隐藏的。 右键单击工作区,选择编辑,然后在高级选项卡下有一个主机字段,我更改为匹配当前主机名(包括端口 - 新主机:1666)。 设置与用户/工作区的连接 现在复选标记为红色,而不是蓝色。 我选择了每个标记的文件,右键单击并选择Resolve by default safe mode。我忘了图标是否改变了。 然后我右键单击并选择Revert if Unchanged,图标返回到同步文件&#34;蓝点。完成。

我希望这是有道理的。

答案 2 :(得分:0)

这听起来像服务器的db.locks和db.working表之间的不一致 - 删除工作区必须删除db.working条目但不删除db.locks条目(它们总是应该是一对一酮)。

从服务器端,有几个选项可以解决这个问题:

p4d -xx db.working db.locks
p4d -jr jnl.fix

或:

p4d -xf 925

也可以通过一些旋转从客户端修复它:

p4 set P4CLIENT=CLIENT_NAME  (where this is the name of the deleted workspace)
p4 client
p4 sync FILE_NAME
p4 edit FILE_NAME
p4 revert FILE_NAME
p4 sync #none
p4 client -d CLIENT_NAME

即。重新创建打开的文件状态(相同的软件仓库文件和相同的客户端名称,以便密钥匹配),然后还原它,以便可以正确清理条目。